Задать вопрос
@Caspergreen

WHERE запрос в Mysql — как?

Доброго времени суток. Вывожу рандомные данные из БД. Столкнулся с проблемой.
$category = $db->super_query("SELECT id, name FROM `".PREFIX."_category` WHERE `id` = ".$random['category']."");

$random['category']
содержит айдишники категорий. Через запятую. Соответственно при запросе, если данные в БД в поле ID имеют ввид (1, 2, 3, 4) происходит крэш. Вида
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 '25,33,37,39,47' at line 1

Запрос получается таким:
SELECT id, name FROM `dle_category` WHERE `id` = 11,25,33,37,39,47
Как исправить данную ошибку? Заранее благодарен за ответ.
  • Вопрос задан
  • 223 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
begemot_sun
@begemot_sun
Программист в душе.
очевидно вам нужно использовать оператор in ( )

SELECT id, name FROM `dle_category` WHERE `id` in (11,25,33,37,39,47)
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Одна из немногих библиотек, позволяющих адекватно и безопасно обработать данную ситуацию - это Safemysql.
$sql "SELECT id, name FROM ?n WHERE id in(?a)";
$categories = $db->getAll($sql, PREFIX."_category",  $random['category']);

А вот в функции super_query() я как раз представляю себе ад, треш и угар.

Впрочем, человеку, пишущему ."" в конце запроса это все равно еще очень долго будет непонятно.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы