我对框架何时自动引用以及何时不引用quote
变量感到困惑。例如,据我所知,它不会引用where
子句(除非您使用额外的参数?)。
是否有一个指南/备忘单,当我们必须手动quote
在基本的CRUD操作?
谢谢。
对我来说,基本的"经验法则"如下:
- 如果您需要将值插入字符串中,如:
"SELECT * from TABLE WHERE value=$value"
,您必须首先引用它。 - 如果你使用占位符,如
$select->where('value = ?', $value');
,或一个数组的值,如array('value' => $value)
,框架将为你引用值。
希望有帮助,
永远不要自己构建查询字符串,总是让Zend_Db为你做。也就是说,不要通过自己构建字符串来指定where子句(以及类似的):
$where = 'id = ' . $_REQUEST['id'] . ' and thing = ' . $_REQUEST['thing'];
$select->where($where);
应该这样做:
$select
->where('id = ?', $_REQUEST['id'])
->where('thing = ?', $_REQUEST['thing']);