我过去使用自己的cms /框架构建了很多网站,我开发了一种执行查询的简单方法。最近我开始玩其他框架,如代码点火器。它们提供原始查询输入,例如......
$this->db->query(“SELECT * FROM news WHERE newsId=1;”);
但他们也通过PHP方法提供MySQL命令的链接。
$this->db->select("*")->from("news")->where("newsId=?");
问题是;每个选项的主要区别和好处是什么。
我知道后面的选项会阻止MySQL注入,但说实话,你可以使用$this->db->escape()
完全相同。
所以最后我可以看到后一个选项只能让你在键盘上使用更多的字母,你会认为这会减慢你的速度。
答案 0 :(得分:2)
我认为codeigniter中activerecord的实现适用于小而简单的查询。 当您需要具有大量连接的复杂查询时,只需编写查询本身就更清楚了。
如果您具备SQL方面的某种技能,我认为额外的抽象层不会给您带来更好的性能。
答案 1 :(得分:1)
我不能代表CodeIgniter(坦率地说,我看到它看起来很相似),但是有几个原因可以使用这样的系统:
->offset(10)->limit(10)
将自动生成OFFSET
,LIMIT
的正确变体,以及MySQL vs的类似子句PostgreSQL等答案 2 :(得分:1)
最近的php框架开发人员使用AR(活动记录)/ DAO(数据库访问对象)模式。因为它真的比原始查询快。现在AR技术最初是从PDO(php数据对象)构建的。
为什么活跃的记录真的很惨?
真正的查询编写是开发人员的最佳习惯。但是有些问题使得它很难实现
1。当我们编写插入并更新大型查询时,有时候很难匹配每一行值..但是AR让它变得简单。你只需先添加数组然后轻松执行 2。与您使用的数据库无关 3。如果有很多条件,有时读取或写入查询真的很难。但在AR中,您可以为1个查询级联多个对象 4. AR节省您重复发言的时间