thinkphp對mysql的CURD操作

jopen 8年前發布 | 17K 次閱讀 ThinkPHP MySQL PHP開發

利用thinkphp(3.2.3)來操作數據庫,首先要連接數據庫。我們需要對某數據庫寫一個配置文件,thinkphp會根據該配置文件自動連接上數據庫。而model文件就不用自定義,內置的即可解決問題。配置文件寫于目錄application\home\conf\config.php下:

<?php
return array(
//'配置項'=>'配置值'
'DB_TYPE'=> 'mysql',//數據庫類型
'DB_HOST'=> '127.0.0.1',//服務器地址
'DB_NAME'=>'jiu151231',//數據庫名稱
'DB_USER'=>'root',//用戶名
'DB_PWD'=>'',//密碼
'DB_PORT'=>'3306',//端口
'DB_PREFIX'=>'',//數據庫表前綴
);

到此,準備工作完成。其中,那個數據庫表前綴,網上關于默認各種說法,我的默認為空。估計其他前綴,打開phpmyadmin可以看到吧。

CURD操作代碼都在目錄application\home\controller\indexcontroller.class.php里,這是控制器文件。下面都是采用M方法實例化表對象的。

C

插入數據

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $jiu0=M('myguests');
        $j0['firstname']='lv';
        $j0['lastname']='oe';
        $jiu0->add($j0);
    }
}

插入多條數據

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $jiu0=M('myguests');
        $list[]=array('firstname'=>'li','lastname'=>'weifeng');
        $list[]=array('firstname'=>'liu','lastname'=>'tian');
        $jiu0->addAll($list);
    }
}

R

讀單條記錄 find方法返回第一個符合條件的記錄

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu=M('myguests');
        $data=$gu->where('firstname="lv"')->find();
        dump($data);
    }
}
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu=M('myguests');
        $gu->where('firstname="lv"')->find();
        dump($gu->data());
    }
}

讀多條數據 select方法 如果查詢出錯,select的返回值是false,如果查詢結果為空,則返回NULL,否則返回二維數組。

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $list = $gu->where('firstname="lv"')->order('id')->limit(5)->select();//返回5條數據
        dump($list);
    }
}

讀取字段值

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $list = $gu->where('id=5')->getField('firstname');
        dump($list);
    }
}
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $list = $gu->getField('id',true);//返回整列
        dump($list);
    }
}
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $list = $gu->getField('id,firstname',5);//返回多列,5條記錄
        dump($list);
    }
}

U

save方法

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $data['firstname']='liu';
        $data['lastname']='hl';
        $gu->where('id=5')->save($data);
    }
}
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $gu->firstname='liu';
        $gu->lastname='hl';
        $gu->where('id=6')->save();
    }
}

更新字段

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $gu->where('id=6')->setField('firstname','wang');
    }
}

更新多個字段

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $data=array('firstname'=>'lv','lastname'=>'huan');
        $gu->where('id=1')->setField($data);
    }
}

而對于統計字段(通常指的是數字類型)的更新,系統還提供了 setInc 和 setDec 方法。

$User = M("User"); // 實例化User對象
$User->where('id=5')->setInc('score',3); // 用戶的積分加3
$User->where('id=5')->setInc('score'); // 用戶的積分加1
$User->where('id=5')->setDec('score',5); // 用戶的積分減5
$User->where('id=5')->setDec('score'); // 用戶的積分減1

3.2.3版本開始,setInc和setDec方法支持延遲更新,用法如下:

$Article = M("Article"); // 實例化Article對象
$Article->where('id=5')->setInc('view',1); // 文章閱讀數加1
$Article->where('id=5')->setInc('view',1,60); // 文章閱讀數加1,并且延遲60秒更新(寫入)

D

delete方法

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $gu = M("myguests");
        $gu->delete(2);//刪除主鍵2對應的記錄
    }
}

delete方法可以刪除單個數據,也可以刪除多個數據,這取決于刪除條件,例如:

$User = M("User"); // 實例化User對象
$User->where('id=5')->delete(); // 刪除id為5的用戶數據
$User->delete('1,2,5'); // 刪除主鍵為1,2和5的用戶數據
$User->where('firstname="lv"')->delete(); // 刪除所有firstname為"lv"的用戶數據

來自: http://www.cnblogs.com/jiu0821/p/5097498.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!