php - 使用查询生成器有什么好处

标签 php mysql codeigniter query-builder

请原谅我对此事的无知,但是使用查询生成器有什么意义呢?写一行 SQL 比写 3 行 AR 代码不是更简洁吗:

$this->db->query(" SELECT title, contents FROM data WHERE id = 2 ");

而不是:

$this->db->select('title, contents');
$this->db->from('data');
$this->db->where('id', 2);

对我来说,这似乎更冗长,但我对查询生成器一无所知,所以我可能会错过一些东西。真的很想知道有什么好处。

最佳答案

如果您需要以编程方式构建查询,CodeIgniter 的 Active Records 比纯文本舒适得多,

$id = 2;

//with CodeIgniter's Active Record
$this->db->select('title, contents');
$this->db->from('data');
if(isset($id))
   $this->db->where('id', $id);

//without CodeIgniter's Active Record
if(isset($id))
   $where = " WHERE id = {$id}";
$this->db->query(" SELECT title, contents FROM data".$where);

好吧,这并没有太大变化,但是如果你对 where 子句有 10 个约束怎么办?

此外,CodeIgniter 的 Active Record 根据您传递的数据以正确的方式构建字符串(使用占位符 ?),即您不必手动插入 '关于查询。

编辑

@上校。 Shrapnel 说 CodeIgniter 的 Active Record 没有任何好处,因为我不同意他的观点,所以我尝试用另一个例子来强化我的论点:

让我们举一个 INSERT 语句的示例:

$array = array('A'=>'aaaa','B'=>'bbbb','C'=>'cccc');

//without CodeIgniter's Active Record
$query = "INSERT INTO my_table (";
$query.= implode(',',array_keys($array)) .')';
$query.= ......

//with CodeIgniter's Active Record
$this->db->insert('my_table',$array);

关于php - 使用查询生成器有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7216882/

相关文章:

codeigniter - 添加 %20 而不是空格

php - 我该如何优化这个 PHP 脚本?

javascript - Ajax - jQuery 和 Ajax 错误/不工作

PHP MYSQL 更新查询不起作用没有错误

javascript - 错误 : The ajax javascript file could not be loaded. 也许 URL 不正确?

php - 不在 MySQL 的 Codeigniter 中使用 LIKE 搜索我想要的内容

PHP MySQL 结果 num 总行数和分页数

php - 在 Codeigniter 中从一个 View 中的两个表获取数据(取决于查询)

sql - 如何更改 SQL 字段的计数器位置

sql - MySQL中是否有TOP的替代品?