【发布时间】:2017-01-15 07:14:44
【问题描述】:
我最终尝试使用 REGEXP CONCAT 函数制作 PDO 准备好的语句。在 phpmyadmin 中,我可以运行以下查询,该查询为我的数据库内容返回正确的结果(“城市”值(在本例中为丹佛))最终将成为绑定参数,但我现在明确地将其放在那里以进行开发) :
SELECT `user_ID` as `ID`
FROM `usermeta`
WHERE (`meta_key` = 'custom_field')
AND (`meta_value` REGEXP '.*"leagues";.*s:[0-9]+:"A".*')
AND (`meta_value` REGEXP '.*"city";.*s:[0-9]+:"Denver".*')
但是,如果我尝试在最后一行使用 CONCAT 函数,结果是一个空集。换句话说,MySQL 并没有在查询本身上抛出任何错误,但是没有选择正确的数据:
SELECT `user_ID` as `ID`
FROM `usermeta`
WHERE (`meta_key` = 'custom_field')
AND (`meta_value` REGEXP '.*"leagues";.*s:[0-9]+:"A".*')
AND (`meta_value` REGEXP CONCAT('\'.*"city";.*s:[0-9]+:"', 'Denver', '".*\''))
我尝试转义冒号、分号和句点字符,但没有成功。非常感谢任何帮助。
【问题讨论】:
-
做过任何基本的调试,比如
select concat(...)看看你正在生成的模式? -
Marc B: 是的,当我只发送 select concat 语句时,我得到:'.*"city";.*s:[0-9]+:"Denver".*' I '我只是想让 concat 函数正常工作。最后,'Denver' 将被替换为 PDO 参数(? 或 :city)。
-
我猜使用有可能会有所帮助
-
给我们一个应该匹配的例子。