【问题标题】:display error if $_GET['something'] no result [closed]如果 $_GET['something'] 没有结果则显示错误 [关闭]
【发布时间】: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=&lt;?php echo "$cat[ID]";?&gt;#lamna_kommentar"&gt;Lämna en kommentar&lt;/a&gt;,但没有结果时没有其他内容。

我真的想不通,可能很简单,任何指导将不胜感激。

【问题讨论】:

  • 您的查询字符串中没有任何名为“Category”的内容
  • 警告:使用 PDO 时,您应该使用带有占位符值的 prepared statements,并将任何用户数据作为单独的参数提供。在此代码中,您可能有严重的SQL injection bugs。永远不要使用字符串插值或连接,而是使用 prepared statements 并且永远不要将 $_POST$_GET 数据直接放在查询中。有关此问题和其他问题的指导,请参阅 PHP The Right Way
  • @tadman 是的,谢谢,不是生产站点,所以我没有真正打扰
  • @perkällström 这是书中最古老的借口。学会做正确的事,并一直这样做。
  • 现在是修复它的最佳时机。这太危险了,不能忘记。

标签: php mysql query-string


【解决方案1】:

您可以测试返回的行数:

if ($stmt->rowCount() == 0) {
    // display error
} else {
    while ($cat = $stmt->fetch(PDO::FETCH_ASSOC)) {
        ...
    }
}

【讨论】:

  • 如果你使用 rowCount 代替它可以工作,谢谢! :)
  • 糟糕,混淆了 PDO 和 mysqli,抱歉
  • 不用担心,再次感谢 :)
猜你喜欢
  • 1970-01-01
  • 2021-06-04
  • 2013-02-19
  • 2015-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
  • 2012-04-08
相关资源
最近更新 更多