我正在为网站制作新闻系统。我使用了本教程中的新闻系统:http://pixelcode.co.uk/tutorials/php/mysql-news-system/
所以为了显示新闻我使用这行代码:
if(!$_GET['id'])
{
$query = mysql_query("SELECT * FROM news ORDER BY id DESC");
while($output = mysql_fetch_assoc($query))
{
echo '<div id="nieuws">';
echo '<a href="?id='.$output['id'].'" id="link">';
echo '<h1>'.$output['title'].'</h1>';
echo '<span id="date">'.date('d-m-y', $output['date']).'</span><br / >';
echo $output['shortnews'].'<br / >';
echo '</a>';
echo '</div>';
}
}
else
{
$id = $_GET['id'];
$query = mysql_query("SELECT * FROM news WHERE id='$id'");
$output = mysql_fetch_assoc($query);
?>
<form method="post" action="?id=<? echo $output['id']; ?>">
<h1><? echo $output['title']; ?></h1>
<? echo '<span id="date">'.date('d-m-y', $output['date']).'</span><br / >' ?>
<? echo $output['news']; ?>
</form>
<?php } ?>
我能做到:if(!$_GET['id'] = 6)
但我不能这样做:if(!$_GET['id'] > 6)
。有什么问题?或者是否有另一个更大的代码?
感谢您回复,MARCH
答案 0 :(得分:4)
Operator precedence:!
比==
更紧密,所以你有效地做了
(not($_GET) == 6)
这就是不平等测试!=
的原因。
如果你使用了适当的包围,例如
(!($_GET['id'] == 6))
然后你会做
not(id == 6)
并获得预期的结果,因为它在逻辑/功能上等同于id != 6
请注意,您很容易受到sql injection attacks的攻击,并且正在使用过时/已弃用的数据库界面。
答案 1 :(得分:0)
使用isset()
:
if (isset($_GET['id'])) ...
或者,我喜欢做什么:
// Get all possible arguments:
$id = @$_GET['id']; // The @ prevents an error message
$foo = @$_GET['foo']; // foo means ... (explain the args)
...
// Later, as needed:
if (isset($id)) ...