Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有双引号的子字符串索引查询在PHP中不起作用_Php_Mysql - Fatal编程技术网

带有双引号的子字符串索引查询在PHP中不起作用

带有双引号的子字符串索引查询在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

我试图从包含序列化格式数据的数据库中获取数据

下面是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(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之间。
谢谢,这很有效!!