phpGrace 数据库操作类提供了 init() 函数和 table() 函数,分别用于获取数据库操作对象和数据表操作对象。其实 table() 函数会自动调用 init() 函数,当您需要操作整个数据库时使用 init() 函数,当您明确操作某个具体的数据表时使用 table() 函数。
1 大部分情况下推荐使用 table() 函数获取基于数据表的操作对象进行数据的增删改查,您不需要自己编写 sql 命令。如果框架提供的连贯函数不能满足您的需求或者您需自己编写 sql 命令并执行时请使用 init() 函数获取数据库操作对象。
2 如果已经获得数据库对象可以使用 setTable() 函数切换到具体的数据表对象 ,如 :
$res = database::init() ->setTable('students') ->where('st_id = ?', array(1)) ->field('st_age', 2);
1 基于数据库的操作,不能或者不想指定某个具体的表进行操作;
2 操作类提供的连贯方法不能满足您的要求,使用数据库操作对象的 query() 函数执行自己的sql 语句;
init(string $configName = 'mainDB')
参数 : $configName 数据库配置中对应的键名称,可选参数【 默认 mianDB】
返回 : 数据操作对象
<?php namespace grace\controller; use grace\grace; use grace\database; class index extends grace{ public function index(){ // 示例选择 id 为 2 的一条数据 $data = database::init() ->query('select * from grace_students where st_id = ?', array(2)) ->queryFetch(); print_r($data); } }
query(string $sql, array $parameters = null)
功能 : 数据操作基础函数,基于PDO的预处理,用于执行 sql 命令。
参数 :
1 $sql : sql 命令,建议使用 ? 作为占位符;
2 $parameters : 对应 sql 命令占位符的数据数组,可选参数,默认为 null [ 如果 sql 命令没有占位符 ]
返回 : 查询语句返回数据操作对象 / 增删改语句返回执行结果 true | false
<?php namespace grace\controller; use grace\grace; use grace\database; class index extends grace{ public function index(){ // 插入一条数据示例 $data = array( 2, 'insert test', 18, time() ); $db = database::init(); $res = $db->query( 'insert grace_students (st_class_id, st_name, st_age, st_add_time) value (?, ?, ?, ?)', $data ); if($res){ echo '数据写入成功,主键 : '.$db->lastInsertId(); }else{ echo '执行失败,错误 : '.$db->error(); } } }
基于指定数据表的数据操作,默认会自动调用 init() 函数完成初始化工作;
init(string $tableName, bool $useTablePrefix = true, string $configName = 'mainDB')
参数 :
1 $tableName 数据表名称,如果 第2个参数为 true,此处表名称传参时请去掉统一的表前缀;
2 $useTablePrefix 是否使用统一的表前缀,可选参数【 默认 true】
1 $configName 数据库配置中对应的键名称,可选参数【 默认 mianDB】
返回 : 数据操作对象
<?php namespace grace\controller; use grace\grace; use grace\database; class index extends grace{ public function index(){ // 示例选择 id 为 2 的一条数据 $data = database::table('students') ->where('st_id = ?', array(2)) ->fetch(); print_r($data); } }
获取操作对象后就可以利用数据操作类库提供的丰富的连贯操作方法快速完成数据相关的操作,操作过程几乎是不需要您自己编写 sql 语句的 ~ 请继续阅读书册,学习更多的操作方法。