首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个绑定参数的Zend Select

问具有多个绑定参数的Zend Select
EN

Stack Overflow用户
提问于 2014-03-22 01:21:27
回答 2查看 1.6K关注 0票数 0

我正在尝试使用一个带有多个绑定参数的Zend_Db_Table对象来编写查询。在输入真实值之前,我的查询运行如下:

代码语言:javascript
复制
$mytbl = new MyTable();
$myresults = $mytbl->fetchAll(
        "(col1 LIKE 'val1' AND col2 LIKE 'val2') 
        OR (col1 LIKE 'val2' AND col2 LIKE 'val1')) 
        AND col3 = 'val3');

这是可行的--除非我的变量没有被正确地引用。然后,我尝试将第二行替换为:

代码语言:javascript
复制
$mytbl->fetchAll(
        "(col1 LIKE ? AND col2 LIKE ?) 
        OR (col1 LIKE ? AND col2 LIKE ?)) 
        AND col3 = ?, 
        array(
            $db->quote($val1), 
            $db->quote($val2), 
            $db->quote($val2), 
            $db->quote($val1), 
            $db->quote($val3)));

但是之后我得到了一个SQL错误,参数的数量不匹配。所以我试着:

代码语言:javascript
复制
$mytbl->fetchAll(
        $mytbl->select()
            ->where("(col1 LIKE ? AND col2 LIKE ?) 
                    OR (col1 LIKE ? AND col2 LIKE ?)) AND col3 = ?, 
                    array(
                        $db->quote($val1), 
                        $db->quote($val2), 
                        $db->quote($val2), 
                        $db->quote($val1), 
                        $db->quote($val3))));

但是我得到了同样的错误。如果我放入一个没有数组的参数,那么它会正确地进行替换,但是有了数组,它就不起作用了。如何像这样绑定多个参数?

EN

回答 2

Stack Overflow用户

发布于 2015-02-04 06:28:06

只需使用IN并将问号放在括号中...示例:

代码语言:javascript
复制
$productIds = array(1, 2, 3);

$select = $db->select()
             ->from('products',
                    array('product_id', 'product_name', 'price'))
             ->where('product_id IN (?)', $productIds);
票数 1
EN

Stack Overflow用户

发布于 2014-03-22 03:51:56

你不需要引用你的变量,ZF会帮你解决这个问题:

代码语言:javascript
复制
$mytbl->fetchAll(
        "(col1 LIKE ? AND col2 LIKE ?) 
        OR (col1 LIKE ? AND col2 LIKE ?)) 
        AND col3 = ?", 
        array($val1, $val2, $val3, $val4, $val5));
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22565410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档