根据文档,simple_query不会返回任何数据库结果集,也不会设置查询计时器,也不会编译绑定数据,也不会为调试而存储查询。
与在我的CodeIgniter中一样,我使用CI提供的查询构建器来生成查询。
那么,如果这些用于插入、更新和删除的查询构建器的工作方式与simple_query相同,或者它们在后台的工作方式不同呢?
发布于 2018-01-01 16:00:04
simple_query()
是CodeIgniter中唯一的数据库方法,它的行为正如您所指出的那样。正如文档所述:“大多数用户很少使用此功能。”
除了少数例外,所有其他查询构建器方法要么返回一个DB_query_builder
实例、一个CI_DB_result
对象,要么返回一个表示成功或失败的布尔值(对于“写”类型查询)。少数例外返回整数、字符串或混合(值或假)。
所有接受输入值的方法都会转义(也可以选择不转义)提供的值。
虽然Query Builder (QB)是一个很好的工具,但它通常不是必需的。使用$this->db->query('your statement here');
通常更有效。理解QB的目标是创建一个字面上用于调用db->query('a query string');
的字符串。
因此,与其输入所有这些内容,不如...
$this->db->select('id, name, email');
$this->db->from('customers');
$this->db->where('id', $id)
$this->db->where('active', $is_active)
$query = $this->get();
$result = $query->result();
输入以下命令会产生与上面完全相同的结果,因为它直接提供了QB在上面的代码中构建的查询字符串。(查询也完全转义。)但它执行的代码要少得多。(只需更少的输入。)
$query = $this->db->query("Select id, name, email from customers where id = ? and active = ?", [$id, $is_active]);
$result = $query->result();
这是一个使用Query Binding的示例
研究核心源代码(主要在“驱动程序”文件中)将向您展示在哪里使用simple_query()
是合适和有用的。
https://stackoverflow.com/questions/48049309
复制相似问题