Active Record 类的语句顺序问题
我们平时写SQL语句的时候,where语句往往写在整个sql语句的后面,例如:update mytable
set name = 'test'
where id = 1
如果在Active Record 类中也这样思考就麻烦了。
$data = array(
'name' => $name
);
$this->db->update('mytable', $data);
$this->db->where('id', $id);
以上代码中的update根本不考虑where而直接执行整个表的修改。
正确的写法应该是:
$data = array(
'name' => $name
);
$this->db->where('id', $id);
$this->db->update('mytable', $data);
我建议在Active Record 类的“用户指南”中应该特意提醒一下顺序的问题才对。
看到这个我想下次ci加上一个update_where()的ar。 还没有因为这个顺序出问题.
直觉$this->db->update('mytable', $data)方法后
就是最终的结束操作了..在此之后的语句肯定无效..
其它方法类似,比如$this->db->get..
肯定是在条件语句写完之后.. 知道程序运行逻辑的人 应该都不会弄错楼主想多了 强烈同意!
我现在刚开始学CI,用链式语句时下意识的就模仿手册中$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);的顺序写update语句,因为这也符合SQL的语法习惯
差点铸成大错。。。
mysql 是 mysqlCI 是 CI 每个系统都应遵循自己的原则
页:
[1]