Запрос MySQL С использованием JSON_CONTAINS

#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')";