我的表中有一个名为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');
这可能吗?我使用正确的语法吗?有更好的方法吗?
答案 0 :(得分:3)
几乎,但不完全 - 这是一种可行的方式
$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);
(我假设数组不为空,为了清楚起见,数组元素已经过santized等等!)
答案 1 :(得分:2)
你从哪里获得id数组?如果它来自数据库,您应该考虑在那里完成所有操作:
SELECT * FROM myTbl WHERE c_id IN (SELECT c_id FROM yourTable WHERE ...);
答案 2 :(得分:1)
是的,mysql的语法是这样的:
SELECT * FROM myTbl WHERE category_id IN(1,2,3,4,5,6);
(因为值是整数,它们不需要引号。如果它们是字符串,它们每个都需要用自己的引号括起来 - category_id IN('a','b')