从不等于$var的表结果中选择


Select From table results that don't equal to $var?

我如何使它选择所有不等于$var的结果,这是我的代码。

$opti=mysql_query("SELECT * FROM table1 WHERE imageid=$image_id");
    while ($vari = mysql_fetch_array($opti)) {
        $var = $vari['tagid'];
    $options=mysql_query("SELECT * FROM table WHERE id!=$var");
    while ($taghe1 = mysql_fetch_array($options)) {
     $tagname = $taghe1['name'];
     echo "".$tagname.", ";
    } }    

尝试:

$options=mysql_query("SELECT * FROM table WHERE id<>{$var}");

从您接受的答案中可以看出,添加引号解决了您的问题。另一种方法是只使用一个查询。我将展示一个使用mysqli代替已弃用的mysql的例子,但是如果你必须使用它,同样的查询应该在mysql中工作。我补充了一些其他的建议,这些建议并没有真正解决你的问题,但让我对我的答案感觉更好。

// Please be sure to escape $image_id before using it like this
$unused_tags = mysqli_query($db, "SELECT `name` FROM `table` AS t 
    LEFT JOIN (SELECT tagid FROM table1 WHERE imageid=$image_id) AS t1 
    ON t.id = t1.tagid WHERE t1.tagid IS NULL;");
while ($tag = mysqli_fetch_array($unused_tags)) {
    $tags[] = htmlspecialchars($tag['name']); // escape your output
}
echo implode(", ", $tags); // doing it this way eliminates the trailing comma

你可以这样写:

$options=mysql_query("SELECT * FROM table WHERE id not in ('$var')");

这里可以有多个值,例如

$options=mysql_query("SELECT * FROM table WHERE id not in ('$var1', '$var2', '$var3')");