带双引号的SUBSTRING_INDEX查询在PHP中不起作用

时间:2018-05-21 08:12:07

标签: 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(SUBSTRING_INDEX(`column`, '"age";s:2:"', -1), '"', 1) BETWEEN 25 AND 30"

请让我知道我该怎么做。

1 个答案:

答案 0 :(得分:0)

您遇到此问题,因为您使用双引号在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"

阅读here以获取有关PHP中双引号字符串的更多信息。