我如何使它选择所有不等于$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')");