Запрос SUBSTRING_INDEX с двойными кавычками не работает в PHP

0

Я пытаюсь извлечь данные из базы данных, которые содержат данные в формате serialize.

Ниже 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
    Вы должны избегать двойных кавычек: $query = "SELECT * FROM wpyr_ads WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(column, '\"age\";s:2:\"', -1), '\"', 1) BETWEEN 25 AND 30"
  • 0
    Спасибо, это работает!
Теги:

1 ответ

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"

Читайте здесь, чтобы узнать больше о двойных кавычках в PHP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню