Я пытаюсь извлечь данные из базы данных, которые содержат данные в формате 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"
Пожалуйста, дайте мне знать, как я могу это сделать.
У вас есть эта проблема, поскольку вы используете двойные кавычки для создания строкового литерала в 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_ads WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(column, '\"age\";s:2:\"', -1), '\"', 1) BETWEEN 25 AND 30"