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

wvyml7n5  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(265)

我正在尝试从包含序列化格式数据的数据库中获取数据。
下面的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"

请告诉我怎么做。

k97glaaz

k97glaaz1#

由于在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中双引号字符串的更多信息。

相关问题