#mysql #json
Вопрос:
У меня есть таблица MySQL 5.7, которая включает столбец типа VARCHAR с именем «область», содержащий данные JSON. Например [«BS20″,»BS21»]
Мне нужно выполнить поиск в этой таблице, чтобы найти первую строку, содержащую определенную строку. Строка содержится в переменной типа
$area = BS20;
и я попробовал это для своего запроса
SELECT * FROM aedv2_admin WHERE JSON_CONTAINS(area,'$area')=1
и я получаю ошибку
Недопустимый текст JSON в аргументе 2 для функции json_ содержит: «Недопустимое значение». в позиции 0.12
Для тестирования я попытался жестко закодировать аргумент 2 как BS20 и «BS20», но ни то, ни другое не помогает. Что я делаю не так?
Комментарии:
1. и я попытался сделать это для своего запроса , предоставив текст запроса, а не часть, вырезанную из PHP-кода.
2. Используйте JSON_SEACRCH(). Или
'$area'
после замены должны дать'"BS20"'
. dbfiddle.uk/…
Ответ №1:
Фу! Это было немного болезненно, но благодаря Акине мой окончательный код закончился так
$area = '"'.$_POST['area'].'"';
$query_sponsor = "SELECT * FROM aedv2_admin WHERE JSON_CONTAINS(area,'$area')";