gpt4 book ai didi

php - MySQL REGEXP CONCAT 语法

转载 作者:行者123 更新时间:2023-11-29 11:18:23 30 4
gpt4 key购买 nike

我最终尝试使用 REGEXP CONCAT 函数制作 PDO 准备语句。在 phpmyadmin 中,我可以运行以下查询,该查询为我的数据库内容返回正确的结果(“城市”值(在本例中为丹佛))最终将成为绑定(bind)参数,但我现在将其明确放入其中以进行开发) :

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', '".*\''))

我尝试转义冒号、分号和句点字符,但没有成功。非常感谢任何帮助。

最佳答案

您正在向表达式添加文字引号:

AND (`meta_value` REGEXP CONCAT('\'.*"city";.*s:[0-9]+:"', 'Denver', '".*\''))    
^ ^

这些不在你的第一个表达中。第一个表达式中的引号封装了 SQL 字符串。所以:

AND (`meta_value` REGEXP CONCAT('.*"city";.*s:[0-9]+:"', 'Denver', '".*'))

我认为可行。您也不需要使用 mysql concat。您可以将变量连接到绑定(bind)中的表达式中。编写 SQL:

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 ?)

然后构建绑定(bind),如下所示:

'.*"city";.*s:[0-9]+:"' . $city . '".*'

前导和尾随的 .* 也不是必需的。如果没有该规则,规则也会匹配,因为您没有使用 anchor 。

关于php - MySQL REGEXP CONCAT 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39372564/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com