[英]Select mysql with php for mail into serialize array
输入info@test.com
我怎样才能在数据库中 select 记录具有以下值?
a:4:{s:4:"nome";s:14:"Napoleon";s:5:"email";s:23:"info@test.com";s:19:"conferma_condizioni";s:1:"1";s:2:"ip";s:12:"84.33.92.109";}
我努力了:
$sql_mail = "SELECT * FROM wp_cf7db WHERE data REGEXP '.*'info@test.com';s:[0-9]+:'2'.*'"
object 使用数据类型(在您的情况下为字符串)和字符串的长度进行编译。 你可以使用类似的东西:
'select *
from table
where data REGEXP concat("s:",' . mb_strlen($email) . ', ":", ?, ";")'
然后绑定$email
,这应该让你非常接近。 如果 email 包含特殊的正则表达式字符,但您需要转义这些字符。 或者,可以使用like
的。 只有这样,通配符才需要转义:
'select *
from table
where data like concat("%s:",' . mb_strlen($email) . ', ":", ?, ";%")'
您之前的尝试也可能有效,但您需要修复引用:
'.*'info@test.com';s:[0-9]+:'2'.*'
单引号用于正则表达式封装,另外 object 构造使用双引号,所以你想要:
'.*"info@test.com";s:[0-9]+:"2".*'
如果s:5:"email";s:
总是在前面,您也可以添加它以使其更严格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.