显示错误,如果$ _GET [“东西”]没有结果
问题描述:
各地的查询字符串等升技这样的IM搞乱,但是我想,如果没有从这个代码结果显示错误:
else {
if (isset($_GET['Category'])) {
$category = $_GET['Category'];
$sql = "SELECT * FROM Posts WHERE Category='$category'";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':category'=>$category));
while($cat = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<div class="post_body">
<div class="post_header">
<h2><?php echo "$cat[Title]";?></h2>
</div>
<?php echo "$cat[Post]";?>
<a class="read-more" href="?ID=<?php echo "$cat[ID]";?>#lamna_kommentar">Lämna en kommentar</a>
<hr>
<div class="post_footer">
<span class="left_span">
<strong>Av: </strong><?php echo "$cat[Author]";?>
<strong>Kategori: </strong><?php echo "$cat[Category]";?>
</span>
<span class="right_span">
<strong>Datum: </strong><?php echo date_format(new DateTime($cat['Date']), 'd M Y, H:i');?>
<strong>Inlägg: #</strong><?php echo "$cat[ID]";?>
</span>
</div>
</div>
<?php
}
}
,因为它现在工作此链接显示a class="read-more" href="?ID=<?php echo "$cat[ID]";?>#lamna_kommentar">Lämna en kommentar</a>
但没有其他没有结果时。
我真的不知道这个,可能是简单的东西,任何指导将不胜感激。
答
您可以测试所返回的行数:
if ($stmt->rowCount() == 0) {
// display error
} else {
while ($cat = $stmt->fetch(PDO::FETCH_ASSOC)) {
...
}
}
你不必在你的查询字符串名为“类别”什么 –
** WARNING **:当使用PDO,你应该使用方法制得。语句](http://php.net/manual/en/pdo.prepared-statements.php)与占位符值并提供任何用户数据作为单独的参数。在此代码中,您可能会遇到严重的[SQL注入漏洞](http://bobby-tables.com/)。切勿使用字符串插值或连接,而应使用[准备语句](http://php.net/manual/en/pdo.prepared-statements.php),并且绝对不要将'$ _POST'或'$ _GET'数据直接放入您的查询。有关此问题和其他问题的指导,请参阅[PHP正确方法](http://www.phptherightway.com/)。 – tadman
@tadman是啊谢谢,不是一个生产网站或如此atm所以我真的很困扰 –