我们CMS内置了一个快速强大的数据库抽象类,支持传统的查询架构以及查询构造器模式。 数据库方法的语法简单明了。


同时支持Codeigniter、Laravel、ThinkPHP三种内核的数据库查询。


一、基本用法


数据库对象调用方法


\Phpcmf\Service::M()->db


运行查询语句


$rt = \Phpcmf\Service::M()->db->query("你的查询语句");


获取最后一次查询的sql语句

$query = \Phpcmf\Service::M()->db->getLastQuery();

二、查询结果


多个查询结果返回


$rt = \Phpcmf\Service::M()->db->query("select * from dr_member");

if ($rt) {

    $rows = $rt->getResultArray();

    foreach ($rows as $t) {

        echo $t['id'];

        .....

    }

}


单个查询结果返回


$rt = \Phpcmf\Service::M()->db->query("select * from dr_member where id=1");

if ($rt) {

    $row = $rt->getRowArray();

    echo $row['id'];

}


三、对象查询


统计某表数据

\Phpcmf\Service::M()->db->table('member')->countAllResults(); // 全部

\Phpcmf\Service::M()->db->table('member')->where('money', 0)->countAllResults(); // 带条件


条件查询表


$rt = \Phpcmf\Service::M()->db->table("member")->where("字段", "字段值")->get();

if ($rt) {

  $rows = $rt->getResultArray();

  var_dump($rows); 

}


限定数量查询


$rt = \Phpcmf\Service::M()->db->table("member")->limit(10, 0)->get();

if ($rt) {

  $rows = $rt->getResultArray();

  var_dump($rows); 

}


字段选择查询


$rt = \Phpcmf\Service::M()->db->table("member")->select("id,username,email")->get();

if ($rt) {

  $rows = $rt->getResultArray();

  var_dump($rows); 

}


四、插入数据


$data = array(

    'title' => 'My title',

    'name' => 'My Name',

    'date' => 'My date'

);

\Phpcmf\Service::M()->db->table('test')->insert($data);

echo $id = \Phpcmf\Service::M()->db->insertID(); // id

test是表名称,data数组是插入的字段和对应值


五、修改数据


按条件修改


$data = array(

    'title' => 'My title',

    'name' => 'My Name',

    'date' => 'My date'

);

\Phpcmf\Service::M()->db->table('test')->where('id', 123)->update($data);


字段分开写法


$db = \Phpcmf\Service::M()->db->table('mytable');

$db->where('id', 2);

$db->set('field', 'field + 1', false); 

$db->update();

//UPDATE mytable SET field = field+1 WHERE `id` = 2


$db = \Phpcmf\Service::M()->db->table('mytable');

$db->where('id', 2);

$db->set('field', 999);

$db->update();

//UPDATE mytable SET field = 999 WHERE `id` = 2



字段加减值


$db = \Phpcmf\Service::M()->db->table('mytable');

$db->where('id', 2);

$db->increment('field', 99);

//UPDATE mytable SET field = field+99 WHERE `id` = 2


$db = \Phpcmf\Service::M()->db->table('mytable');

$db->where('id', 2);

$db->decrement('field', 99);

//UPDATE mytable SET field = field-99 WHERE `id` = 2


六、数据删除


条件删除


$db = \Phpcmf\Service::M()->db->table('mytable');

$db->delete(array('id' => 123)); 

// DELETE FROM mytable  WHERE id = 123

清空表


$db = \Phpcmf\Service::M()->db->table('mytable');

$db->truncate();


七、事务处理


写法标准


\Phpcmf\Service::M()->trans_start(); // 开启事务

// 写入数据

\Phpcmf\Service::M()->table('member')->insert([

    'username' => '1',

    'phone' => 888,

    'salt' => 888,

    'name' => 888,

    'money' => 888,

    'freeze' => 888,

    'spend' => 888,

]);

\Phpcmf\Service::M()->trans_comment(); // 提交事务



回滚事务


\Phpcmf\Service::M()->trans_rollback(); 



八、其他




执行insert,update等时返回有多少行受影响


\Phpcmf\Service::M()->db->affectedRows();