php - 我如何在 Zend_Db_Select where() 子句中使用问号 '?'?

标签 php mysql zend-framework

我有以下 MySQL 查询,我试图将其转换为等效的 Zend select() 语句:

SELECT `entity_id` FROM `my_table` WHERE `attribute_id` IN (541,554,555,556) \
AND LOWER(REPLACE(TRIM(`value`), '-', '')) REGEXP '([^[:space:]]* )?$param$'

$param 是一个 PHP 变量,已过滤为仅包含字母数字字符。

到目前为止,这是我对 Zend select() 语句的了解:

$db->select()
   ->from('my_table', 'entity_id')
   ->where('attribute_id IN (?)', array(541,554,555,556))
   ->where('LOWER(REPLACE(TRIM('
       . $db->quoteIdentifier('value')
       . '), "-", "")) REGEXP "([^[:space:]]* )?'
       . $param
       . '$"');

$param = 'foo' 时实际输出的 SQL:

SELECT `entity_id` FROM `my_table` WHERE (attribute_id IN (541, 554, 555, 556)) \
AND (LOWER(REPLACE(TRIM(`value`), "-", "")) REGEXP "([^[:space:]]* )foo$")

我需要能够告诉 where() 不要尝试替换问号。怎么办?

最佳答案

一般来说,我相信你可以简单地替换“?”带有 Zend_Db_Expr('?') 的字符串。

在您的情况下,我认为您希望将整个第二个 WHERE 子句替换为:

->where(new Zend_Db_Expr('LOWER(REPLACE...'))

类似的东西...

关于php - 我如何在 Zend_Db_Select where() 子句中使用问号 '?'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993828/

相关文章:

php - 使用 PHP 扩展从 PHP 连接 C 套接字服务器

php - 如何在 magento 2 中添加自定义顶部链接?

php - 无法使用 "WHERE s_id IN ($array)"在 mysql 中选择项目

php - 较小的 <img> 适用于 Firefox v22.0,但不适用于 IE v10.0.9

php - 检索整个 MySQL 表或创建一个可以检索可变数量字段的数据库管理器哪个更有效?

小写的 am/pm 的 MySQL 格式时间

php - Zend 框架 2 REST API : set Request parameters

zend-framework - 在 Zend Framework 应用程序上使用 PHPUnit,如何强制将语言环境用于给定测试?

javascript - 如何在 Wordpress 中创建添加以进行比较?

javascript - 从 php/laravel 循环遍历集合,并将每次迭代中的一个项目添加到 jsPDF 捆绑文档