【发布时间】:2017-02-14 01:20:17
【问题描述】:
所以我在处理查询字符串等问题,但是如果这段代码没有结果,我想显示一个错误:
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>,但没有结果时没有其他内容。
我真的想不通,可能很简单,任何指导将不胜感激。
【问题讨论】:
-
您的查询字符串中没有任何名为“Category”的内容
-
警告:使用 PDO 时,您应该使用带有占位符值的 prepared statements,并将任何用户数据作为单独的参数提供。在此代码中,您可能有严重的SQL injection bugs。永远不要使用字符串插值或连接,而是使用 prepared statements 并且永远不要将
$_POST或$_GET数据直接放在查询中。有关此问题和其他问题的指导,请参阅 PHP The Right Way。 -
@tadman 是的,谢谢,不是生产站点,所以我没有真正打扰
-
@perkällström 这是书中最古老的借口。学会做正确的事,并一直这样做。
-
现在是修复它的最佳时机。这太危险了,不能忘记。
标签: php mysql query-string