У меня в таблице есть числовое поле category_id. Я хочу сделать что-то подобное.
$ids=implode(',',$id_array);
$sql = "SELECT * FROM myTbl WHERE IN(category_id,'$ids')";
Что должно вывести что-то вроде:
SELECT * FROM myTbl WHERE IN(category_id,'1,2,3,4,5,6');
Возможно ли это, и правильно ли я использую для этого синтаксис? Есть лучший способ это сделать?


Почти, но не совсем - вот один из способов, которым это могло бы сработать
$ids = "'".implode("','",$id_array)."'";
$sql = "SELECT * FROM myTbl WHERE category_id IN($ids)";
Что должно вывести что-то вроде:
SELECT * FROM myTbl WHERE category_id IN('1', '2', '3', '4', '5', '6');
Обратите внимание, что, поскольку поле является числовым, кавычки не нужны, но это полезная идиома кода для построения списков строк в кавычках. В вашем случае вы можете упростить
$ids=implode(',',$id_array);
(Я предполагаю, что массив не пуст, элементы массива очищены и т. д. Для ясности!)
да, пропустил, что он объяснил это. Изменили.
Да, синтаксис mysql таков:
SELECT * FROM myTbl WHERE category_id IN(1,2,3,4,5,6);
(поскольку значения являются целыми числами, они не нуждаются в кавычках. Если бы они были строками, каждую из них нужно было бы заключить в свои собственные кавычки - category_id IN ('a', 'b')
Откуда вы берете массив id? Если это из базы данных, вам следует подумать о том, чтобы сделать все это там:
SELECT * FROM myTbl WHERE c_id IN (SELECT c_id FROM yourTable WHERE ...);
Спасибо, все немного быстрее
category_id - числовое поле, в IN кавычки не требуются.