Zend Db Select?加入*条件中的替换

时间:2010-02-02 01:22:50

标签: php zend-framework zend-db

看起来Zend_Db_Select的条款中没有任何参数替换。

我不能只做以下事情,这非常令人讨厌:

$select->joinLeft('st_line_item','st_line_item.order_id = st_order.id and st_line_item.status = ?')

那么在流畅的界面中有什么惯用的替代方案呢?我可以做一些事情,比如在外面准备连接子句,但这不是重点。

2 个答案:

答案 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
);