天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

thinkphp中連接oracle時(shí)封裝方法無(wú)法用的解決辦法

最近收集了一些關(guān)于THinkphp連接Oracle數(shù)據(jù)庫(kù)的問(wèn)題,有很多朋友按照連接mysql的方法來(lái)操作,導(dǎo)致有一些方法在Oreale中無(wú)法正常使用。比如說(shuō):findAll,Select方法無(wú)法使用,獲取不到需要的數(shù)據(jù)。Create和add方法無(wú)法創(chuàng)建和寫入數(shù)據(jù)到數(shù)據(jù)庫(kù)中。

其實(shí)根據(jù)以前問(wèn)題我做了幾天調(diào)試,找到了問(wèn)題所在,并成功在我自己一個(gè)小項(xiàng)目練習(xí)中使用正常,那么現(xiàn)在就將我的經(jīng)驗(yàn)分享給大家。

1,數(shù)據(jù)庫(kù)的連接及配置文件的內(nèi)容我就不說(shuō)了, 上面已經(jīng)做了解釋。我這里只根據(jù)一個(gè)數(shù)據(jù)表的例子來(lái)說(shuō)明我的操作。
2,表結(jié)構(gòu)如下:

3,這個(gè)表中有3個(gè)字段,ID主鍵,用戶名username和密碼password,因?yàn)閛racle數(shù)據(jù)庫(kù)把表名和字段都是轉(zhuǎn)成大寫的,同時(shí)不支持ID主鍵自增,我只有使用另外的方法來(lái)實(shí)現(xiàn)這個(gè)功能,比如:ID自動(dòng)序列+觸發(fā)器實(shí)現(xiàn)ID自增。

4,Thinkphp中,Action是控制器,Model是模型,視圖是以模板方式體現(xiàn)的。
首先,說(shuō)控制器,我只做增加和獲取列表的方法介紹。
其次,說(shuō)模型,這里才是成功的主要原因。為什么?Thinkphp是有字段映射的,這個(gè)在對(duì)MYSQL的支持非常完美,基本不用寫MODEL,但是對(duì)ORALCE就不行了,當(dāng)使用M->add()來(lái)添加數(shù)據(jù)時(shí),字段會(huì)被$this->_facade()方法過(guò)濾掉。這樣生成的SQL語(yǔ)句就是沒(méi)法執(zhí)行的,肯定是錯(cuò)誤的,導(dǎo)致數(shù)據(jù)添加不到數(shù)據(jù)庫(kù)中,那么使用select()方法也是一樣被過(guò)濾。

再次,當(dāng)我單步調(diào)試時(shí),斷點(diǎn)被過(guò)濾的時(shí)候,過(guò)濾方法使用到了new出來(lái)的MODEL,這個(gè)MODEL會(huì)有一個(gè)字段映射的數(shù)組在里面,這個(gè)過(guò)濾方法就是和這個(gè)字段數(shù)組進(jìn)行對(duì)比,如果不一致就過(guò)濾掉,結(jié)果我調(diào)試發(fā)現(xiàn),new出來(lái)的MODEL根本沒(méi)有把字段映射加進(jìn)去,數(shù)組直接為空,當(dāng)然就沒(méi)法和添加的數(shù)據(jù)字段一一對(duì)應(yīng)了。這就是錯(cuò)誤的關(guān)鍵。

下面就來(lái)說(shuō)解決方法,其實(shí)很簡(jiǎn)單,按照基本的MVC結(jié)構(gòu),不管是php還是Java還是.NET都有這樣的結(jié)構(gòu),那么按照嚴(yán)格的標(biāo)準(zhǔn),MODEL層的代碼是必須寫的,就是要和數(shù)據(jù)庫(kù)的字段做映射。但是很多用mysql的,就直接沒(méi)有去寫MODEL里面的代碼。這種習(xí)慣被用到了oracle中,就出了問(wèn)題。

5,下面針對(duì)我上面的數(shù)據(jù)表寫出我的代碼:
我的Action是這樣的:UserAction.class.php。控制器我只對(duì)添加和查找做例子,因此代碼如下:
復(fù)制代碼 代碼如下:
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('用戶添加錯(cuò)誤');
            }
        } else {
            header("Content-Type:text/html; charset=utf-8");
            exit($M_User->getError() . ' [ <a href="Javascript:history.back()">返 回</a> ]');
        }
}

Action解釋:
復(fù)制代碼 代碼如下:
$M_User=new UserModel();

這個(gè)方法最好這么寫,因?yàn)樽?NET的原因,一直都這么寫的。針對(duì)具體的模型進(jìn)行實(shí)例化,嚴(yán)格規(guī)定我就要對(duì)User表進(jìn)行操作了。
獲取POST數(shù)據(jù)的代碼就不多解釋了。
復(fù)制代碼 代碼如下:
$M_User->create();

這是Thinkphp的一個(gè)方法,很好,可以幫你過(guò)濾掉非法的東西,建議使用。
復(fù)制代碼 代碼如下:
$Query_Result = $M_User->add($data);

這一段就是數(shù)據(jù)的添加,我習(xí)慣指定要添加的數(shù)據(jù),也是因?yàn)檫@一段需要根據(jù)$M_User實(shí)例化,并過(guò)濾字段。當(dāng)然了,我們只要做好MODEL的代碼,就不會(huì)有問(wèn)題。下面的代碼就不解釋。官方文檔都有。

我的Model是這樣的:UserModel.class.php
復(fù)制代碼 代碼如下:
?protected $fields = array(
            'id', 'username', 'password'
        );

Model解釋:這才是重點(diǎn),這有這樣,new出來(lái)的$M_User的映射字段數(shù)組才不會(huì)為空,這樣才能和POST的數(shù)據(jù)進(jìn)行對(duì)應(yīng),才會(huì)讓過(guò)濾方法正常識(shí)別,不被過(guò)濾。
 
6,經(jīng)過(guò)了以上的操作,針對(duì)Oracle的數(shù)據(jù)庫(kù)操作就完成了,我現(xiàn)在也可以任意使用Thinkphp提供的方法來(lái)操作數(shù)據(jù)了,包括分頁(yè)(limit),find(),findAll等等。

連接mysql或許沒(méi)有問(wèn)題,但是在oracle中,封裝的方法無(wú)法調(diào)用時(shí),一定要在model層中加入字段的定義。

php技術(shù)thinkphp中連接oracle時(shí)封裝方法無(wú)法用的解決辦法,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99综合之综合久久伊人 | 一本久道久久综合狠狠躁AV | 97超碰97资源在线观看 | 九九热这里只有精品2 | 狠狠操天天操夜夜操 | 久久久无码精品无码国产人妻丝瓜 | 网红主播 国产精品 开放90后 | 中文字幕成人在线观看 | 免费高清毛片 | 麻豆一区二区三区蜜桃免费 | 精品无码一区二区三区中文字幕 | 亚洲国产系列一区二区三区 | 99热精品一区 | 国产做国产爱免费视频 | 中字幕视频在线永久在线 | 99热在线精品免费全部my | 国产成人99久久亚洲综合精品 | 国产高潮国产高潮久久久久久 | 人人干人人爽 | 九九精品在线播放 | 美女强奷到抽搐在线播放 | 亚洲精品久久久久中文字幕二区 | 免费国产综合视频在线看 | WWW国产亚洲精品久久麻豆 | 欧美影院在线观看完整版 mp4 | 真实农村女人野外自拍照片 | 欧洲vs美洲完整视频 | 百性阁综合社区 | 青柠在线观看视频在线高清 | 国产GV无码A片在线观看 | 色偷偷亚洲男人天堂 | 亚洲精品午夜久久久伊人 | 美女张开让男生桶 | 伊人香蕉在线播放视频免费 | 亚洲精品国产高清不卡在线 | 久久精品国产欧美日韩99热 | 久久综合色一综合色88 | 国产精品外围在线观看 | 日日摸天天添天天添无码蜜臀 | 丝瓜影院观看免费高清国际观察 | 成人免费观看www视频 |