看起来Zend_Db_Select
的条款中没有任何参数替换。
我不能只做以下事情,这非常令人讨厌:
$select->joinLeft('st_line_item','st_line_item.order_id = st_order.id and st_line_item.status = ?')
那么在流畅的界面中有什么惯用的替代方案呢?我可以做一些事情,比如在外面准备连接子句,但这不是重点。
答案 0 :(得分:10)
这应该有效:
$select->joinLeft(
'st_line_item',
$this->_db->quoteInto(
'st_line_item.order_id = st_order.id and st_line_item.status = ?',
$param
)
)
基本上,只要你想要转义Zend_Db_ *方法不自动执行的变量,你只需使用Zend_Db :: quoteInto()来完成这项工作。
答案 1 :(得分:1)
这就是我一直这样做的方式,它不是一件艺术品,但却完成了工作:
$param = $db->quote($param);
$select->joinLeft(
'st_line_item',
'st_line_item.order_id = st_order.id and st_line_item.status = ' . $param
);