MySQL Query:在php中选择... Not In()

时间:2016-02-29 11:04:49

标签: php mysql

我的值为$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);

请帮帮我。

2 个答案:

答案 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)