试图获取非对象的属性“num_rows”

新手上路,请多包涵

有人可以帮我更正这段代码吗?

我不断收到此错误:-

注意:试图获取非对象的属性“num_rows”

 <?php

  $test = $_GET['param'];
  $sql =" SELECT * FROM img WHERE id = $test ";
  $result = $conn->query($sql);

  if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
      echo " <div class='col-lg-9'> ";

      echo " <div class=card mt-4> ";
      echo " <img src=http://placehold.it/900x400 class=img-responsive alt=Responsive image> ";
      echo " <div class='card-body'> ";
      echo " <a class=pull-right> <button type=button class='btn btn-primary'>Prezzo " .$row["prz"]. " €</button> </a> ";

      echo " <h3 class=card-title>" .$row["nome"]. "</h3> "  ;
      echo "<br>";
      echo "<br>";
      echo " <p class=card-text>" .$row["ldscr"]. "</p> ";
      echo "</div>";
      echo "</div>";
      echo "<br>";
    }
  }

?>

原文由 Nicholas Zaccagnino 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 354
2 个回答

改变

if ($result->num_rows > 0) {

if (!empty($result) && $result->num_rows > 0) {

然后它将起作用。

编辑: 它不会爆炸的原因是首先你要看看是否有任何结果。如果没有,则不会尝试显示它们(这是发生错误的地方)。

你真的应该更换

$sql =" SELECT * FROM img WHERE id = $test ";

$sql =" SELECT * FROM img WHERE id = ?";

然后使用 准备好的语句。但那是另一个问题。

原文由 Theodore R. Smith 发布,翻译遵循 CC BY-SA 3.0 许可协议

正如这里 [ http://php.net/manual/it/mysqli.query.php] 所建议的那样,我会这样做:

 if ($result = $conn->query($sql)) {
    while($row = $result->fetch_assoc()) {
        // ...
    }
}

如果 query 调用失败则返回 FALSE

原文由 Silvio Porcellana 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题