带有双引号的子字符串索引查询在PHP中不起作用
我试图从包含序列化格式数据的数据库中获取数据 下面是MySQL查询在SQL中运行并正确返回数据带有双引号的子字符串索引查询在PHP中不起作用,php,mysql,Php,Mysql,我试图从包含序列化格式数据的数据库中获取数据 下面是MySQL查询在SQL中运行并正确返回数据 SELECT * FROM `wpyr_ads` WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(`column`, '"age";s:2:"', -1), '"', 1) BETWEEN 25 AND 30 但是使用PHP由于引用而无法工作 $query = "SELECT * FROM `wpyr_ads` WHERE SUBSTRING_INDEX(SUBST
SELECT * FROM `wpyr_ads`
WHERE
SUBSTRING_INDEX(SUBSTRING_INDEX(`column`, '"age";s:2:"', -1), '"', 1) BETWEEN 25 AND 30
但是使用PHP由于引用而无法工作
$query = "SELECT * FROM `wpyr_ads` WHERE
SUBSTRING_INDEX(SUBSTRING_INDEX(`column`, '"age";s:2:"', -1), '"', 1) BETWEEN 25 AND 30"
请告诉我如何执行此操作。您有这个问题,因为您使用双引号在PHP中创建字符串文字:
$query = "SELECT * FROM `wpyr_ads` WHERE ... "
// ^ ^ these double quotes
当您在此文本中包含更多双引号时,每个双引号都会结束前一个字符串文本,这不是您想要的。要告诉PHP这些引号不是语法构造的一部分,而是字符串的一部分,您需要对它们进行转义:
$query = "SELECT * FROM `wpyr_ads` WHERE
SUBSTRING_INDEX(SUBSTRING_INDEX(`column`, '\"age\";s:2:\"', -1), '\"', 1) BETWEEN 25 AND 30"
有关PHP中双引号字符串的更多信息,请阅读 您应该转义双引号:
$query=“SELECT*FROM wpyr\u ads WHERE SUBSTRING\u INDEX(SUBSTRING\u INDEX(列“\”age\”)s:2:\”,-1),“\”,1)介于25和30之间。
谢谢,这很有效!!