【威尼斯登录首页】Select方法无法使用
分类:威尼斯登录首页

多年来征集了一些有关THinkPHP连接Oracle数据库的主题素材,有众多相恋的人依照连接mysql的点子来操作,导致有局地办法在Oreale中无法常常使用。举例说:findAll,Select方法无法选拔,获取不到要求的数据。Create和add方法不或许创立和写入数据到数据库中。

实在依照从前难点笔者做了几天调节和测量检验,找到了问题所在,并成功在本人要好二个小品种演习中央银行使正规,那么以后就将自己的涉世分享给我们。

1,数据库的接连及计划文件的开始和结果本人就不说了, 下边已经做精晓释。作者那边只根据八个数据表的例子来验证本人的操作。
2,表布局如下:
威尼斯登录首页 1
3,那些表中有3个字段,ID主键,顾客名username和密码password,因为oracle数据库把表名和字段都是转成大写的,同一时间不援助ID主键自增,小编独有应用此外的办法来贯彻这么些功效,举个例子:ID自动系列+触发器达成ID自增。

4,ThinkPHP中,Action是调节器,Model是模型,视图是以模板格局展现的。
先是,说调节器,笔者只做扩充和收获列表的点子介绍。
其次,说模型,这里才是打响的重大缘由。缘何?ThinkPHP是有字段映射的,这么些在对MYSQL的扶助特别完美,基本不用写MODEL,不过对ORALCE就老大了,当使用M->add(卡塔尔(قطر‎来添扩展少时,字段会被$this->_facade(State of Qatar方法过滤掉。那样生成的SQL语句正是不得已实践的,断定是谬误的,引致数据增多不到数据库中,那么使用select(卡塔尔(قطر‎方法也是同等被过滤。

再度,当本人单步调节和测量试验时,断点被过滤的时候,过滤方法运用到了new出来的MODEL,这些MODEL会有多个字段映射的数组在在那之中,这些过滤方法就是和那几个字段数组实行对照,假诺差别等就过滤掉,结果作者调节和测验开掘,new出来的MODEL根本未有把字段映射加进去,数组间接为空,当然就无语和丰盛的多寡字段生龙活虎意气风发对应了。那正是不当的要害。

上边就来说解决办法,其实非常粗略,依照基本的MVC布局,不管是PHP如故JAVA依然.NET都有这么的布局,那么依据严酷的专门的工作,MODEL层的代码是必得写的,正是要和数据库的字段做映射。可是过多用mysql的,就径直没有去写MODEL里面包车型地铁代码。这种习贯被用到了oracle中,就出了问题。

5,下边针对自己上边的多寡表写出作者的代码:
自家的Action是这么的:UserAction.class.php。调控器作者只对拉长和搜索做例子,因而代码如下:
复制代码 代码如下:
public function index() {
        header("Content-Type:text/html; charset=utf-8");

        $M_User = new UserModel();

        $User_List = $M_User->select();

        $this->assign('Title', '客商管理'卡塔尔国;

        $this->assign('UserList', $User_List);

        $this->display();
}

    //加多客商提交管理
public function Create_Post() {
        $M_User = new UserModel();
        $data['username'] = $this->_post('username');
        $data['password'] = md5($this->_post('pwd'));

        if ($M_User->create()) {
            $Query_Result = $M_User->add($data);
            if (false !== $Query_Result) {
                $this->success('客户增添成功'卡塔尔国;
            } else {
                $this->error('顾客加多错误'卡塔尔(قطر‎;
            }
        } else {
            header("Content-Type:text/html; charset=utf-8");
            exit($M_User->getError() . ' [ 返 回) ]');
        }
}

Action解释: 复制代码 代码如下:
$M_User=new UserModel();

本条方式最佳这样写,因为做.NET的来头,向来都如此写的。针对实际的模子进行实例化,严谨规定本身将要对User表实行操作了。
得到POST数据的代码就少之又少解释了。
复制代码 代码如下:
$M_User->create();

那是ThinkPHP的二个办法,很好,能够帮你过滤掉违规的东西,建议利用。
复制代码 代码如下:
$Query_Result = $M_User->add($data);

那后生可畏段正是数额的丰富,小编习贯钦定要抬高的数额,也是因为那生机勃勃段必要基于$M_User实例化,并过滤字段。当然了,大家假如做好MODEL的代码,就不会反常。上边包车型地铁代码就不表明。官方文书档案都有。

自个儿的Model是那般的:UserModel.class.php
复制代码 代码如下:
?protected $fields = array(
            'id', 'username', 'password'
        );

Model解释:那才是至关心珍视要,那有那般,new出来的$M_User的照射字段数组才不会为空,那样本领和POST的数额开展对应,才会让过滤方法平常识别,不被过滤。
 
6,经过了上述的操作,针对Oracle的数据库操作就完毕了,笔者现在也足以自由使用ThinkPHP提供的点子来操作数据了,富含分页(limit卡塔尔国,find(State of Qatar,findAll等等。

连接mysql或然从未难点,不过在oracle中,封装的格局不可能调用时,必须求在model层中参加字段的概念。

本文由威尼斯在线注册平台发布于威尼斯登录首页,转载请注明出处:【威尼斯登录首页】Select方法无法使用

上一篇:DocumentRoot是文件放置路径,1.apache配置文件中打开vhost的配置 下一篇:威尼斯登录首页  //产生由255个1组成的字符串 ,unset全局变量在实际使用中只能销毁局部变量
猜你喜欢
热门排行
精彩图文