我有以下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'
:
SELECT `entity_id` FROM `my_table` WHERE (attribute_id IN (541, 554, 555, 556)) \
AND (LOWER(REPLACE(TRIM(`value`), "-", "")) REGEXP "([^[:space:]]* )foo$")
我需要能够告诉where()不要尝试并替换问号。怎么样?
答案 0 :(得分:3)
一般来说,我相信你可以简单地取代“?”带有Zend_Db_Expr('?')的字符串。
在您的情况下,我认为您希望用以下内容替换整个第二个WHERE子句:
->where(new Zend_Db_Expr('LOWER(REPLACE...'))
沿着这些方向......