我正在尝试从包含序列化格式数据的数据库中获取数据。
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"
请让我知道我该怎么做。
答案 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中双引号字符串的更多信息。