我的值为$completedId="1,2,3,4,5";
当我在phpmyadmin中运行此查询时,它提供了完美的输出,即6,7,8,9,10。
select cmp_id from comprehension_master where cmp_id NOT in(1,2,3,4,5);
但是当我在php中运行下面给出的查询时,它会将输出显示为2,3,4,5,6,7,8,9,10.
仅对值1执行查询。
$completedId="1,2,3,4,5";
$query="select cmp_id from comprehension_master where cmp_id NOT in('".$completedId."')";
$result=$con->query($query);
$cnt=0;
while($row=$result->fetch_array()){
$cmpId[$cnt]=$row[0];
$cnt++;
}
$cnt=0;
print_r($cmpId);
请帮帮我。
答案 0 :(得分:2)
从查询中删除single quote
。它会将其视为字符串并截断其他ID。
请查看以下查询并尝试使用此功能。
$query="select cmp_id from comprehension_master where cmp_id NOT in(".$completedId.
")";
$result=$con->query($query);
答案 1 :(得分:1)
实际上当运行时:
$query="select cmp_id from comprehension_master where cmp_id NOT in('".$completedId."')";
它被视为:
$query="select cmp_id from comprehension_master where cmp_id NOT in('1,2,3,4,5')";
<强>问题:强>
MYSQL将其视为完整字符串('1,2,3,4,5')
您需要什么?
只需删除引号,无需在ID周围使用引号,如下例所示:
$query="SELECT cmp_id FROM comprehension_master WHERE cmp_id NOT IN ($completedId)";
如果您回复查询,它将如下所示:
SELECT cmp_id FROM comprehension_master WHERE cmp_id NOT IN (1,2,3,4,5)