@haskell_md2

Почему IN не работает в запросе SQL?

Пытаюсь получить строчку из MySQL, которая не содержится в заранее подготовленном массиве.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
  $array = ["Москва"];
  $res = mysqli_query($con,"SELECT title_ru FROM `_cities` WHERE title_ru LIKE '$last%' AND NOT IN ('$array))");

Но получаю следующую ошибку:
Uncaught mysqli_sql_exception: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 'IN (' . implode(',', Array) . ')'
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега PHP
...в творческом отпуске...
неверный синтаксис. во втором условии тоже нужно явно указать поле, для которого применяется
$res = mysqli_query($con,"SELECT title_ru FROM `_cities` WHERE title_ru LIKE '$last%' AND title_ru NOT IN ('$array))");


обязательный коммент про SQL-инъекции
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@necrodeflorator
массив в sql передаётся не так
В простейшем случае вот так надо:
"IN('" . implode("','", $array) . "')"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 80 000 до 100 000 ₽
ROIburo Екатеринбург
от 60 000 до 100 000 ₽
от 90 000 до 110 000 ₽
22 сент. 2020, в 10:32
2000 руб./за проект
22 сент. 2020, в 10:25
200000 руб./за проект
22 сент. 2020, в 10:00
500 руб./за проект