我的数据库表包含以下pageid的1,2,3,4,5,6,7,8 - >会增加更多。 我正在使用
$sql ="select * from pages order by pageid";
$result= mysql_query($sql);
while($page= mysql_fetch_array($result)){
echo "$page[pagetitle]";
}
现在我要选择除pageid = 4之外的所有内容!因此它不会显示具有pageid = 4的页面标题并显示其他1,2,3,5,6 --->和任何其他添加。
怎么说选择除了以外的所有!
答案 0 :(得分:6)
只需添加WHERE
条款WHERE pageid <> 4
:
$sql ="select * from pages WHERE pageid <> 4 order by pageid";
$result= mysql_query($sql);
while($page= mysql_fetch_array($result)){
echo $page['pagetitle'];
}
或者用PHP变量替换它以使其动态化:
$exclpage = 4;
$sql ="SELECT * FROM pages WHERE pageid <> $exclpage ORDER BY pageid";
如果要排除多个pageid,请使用NOT IN()
子句:
// Exclude pages 4,5,9
$sql ="SELECT * FROM pages WHERE pageid NOT IN (4,5,9) ORDER BY pageid";
由于这个答案最近引起了一些注意,因此建议在查询中直接使用预处理语句并参数化变量而不是变量,特别是如果变量是任何用户输入的结果。
$sql ="SELECT * FROM pages WHERE pageid <> ? ORDER BY pageid";
// Bind ? according to your preferred API's method, such as MySQLi::bind_param() or PDO::bindParam()
答案 1 :(得分:0)
就在今天我做了类似的事情,但是使用子查询(我使用t-sql):
select * from pages
WHERE pageid NOT IN (select pageid from myTable where 'some conditions...')
order by pageid
希望你发现它有用