【问题标题】:Trying to get property 'num_rows' of non-object in试图获取非对象的属性“num_rows”
【发布时间】:2019-11-17 17:27:00
【问题描述】:

我在使用教程设置用户配置文件系统时遇到了这个 PHP 错误。

//第一行是报错的那一行

    $sql = "SELECT * FROM users"; 
    $result = $conn->query($sql); 
    if ($result->num_rows > 0) {

        while($row = $result->fetch_assoc()) {

            echo '<hr />';
            echo '<table>';
            echo '<tr><td>ID:</td><td>'.$row["id"].'</td></tr>';
            echo '<tr><td>Avatar:</td><td><img src="'.$row["avatar"].'" width="100px" /></td></tr>';
            echo '<tr><td>Firstname:</td><td>'.$row["firstname"].'</td></tr>';
            echo '<tr><td>Lastname:</td><td>'.$row["lastname"].'</td></tr>';
            echo '<tr><td>Country:</td><td>'.$row["country"].'</td></tr>';
            echo '</table>';

        }
    }
    else {
       echo "0 results";
    }
}

【问题讨论】:

  • 您应该在if ($result-&gt;num_rows &gt; 0) { 上方发布代码,其中设置了$result
  • 我不知道。我是新来的,谷歌搜索错误给了我不起作用的修复。
  • 你的 $results 不是一个对象,但你问的是它的属性“num_rows”,就像它是一个对象一样。很可能您已经检查了您之前的操作是否成功,您在哪里获得了这个 $results。看起来这个“$results”没有很好地获得,但你假设它是。
  • $sql = "SELECT * FROM users"; $result = $conn->查询($sql);
  • 你能显示整个代码吗?

标签: php


【解决方案1】:

当您没有任何结果时,可能会发生此错误,因此您正在尝试获取空对象的属性。正如上面提到的 cmets,首先你应该确保 $results 不为空。而不是:

if ($result->num_rows > 0) {

试试:

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

【讨论】:

    【解决方案2】:

    用 $result->num_rows() 替换 $result->num_rows。因为它是一个函数。我希望这对你有用。

    $result->num_rows()
    

    【讨论】:

      【解决方案3】:

      试试这个

      if ($result && ($result->num_rows() > 0)) 
      { 
      
          while($row = $result->fetch_assoc()) 
          {
      
              echo '<hr />';
              echo '<table>';
              echo '<tr><td>ID:</td><td>'.$row["id"].'</td></tr>';
              echo '<tr><td>Avatar:</td><td><img src="'.$row["avatar"].'" width="100px" /></td></tr>';
              echo '<tr><td>Firstname:</td><td>'.$row["firstname"].'</td></tr>';
              echo '<tr><td>Lastname:</td><td>'.$row["lastname"].'</td></tr>';
              echo '<tr><td>Country:</td><td>'.$row["country"].'</td></tr>';
              echo '</table>';
      
          }
      }
      else {
             echo "0 results";
           }
      

      【讨论】:

        【解决方案4】:
              $lclQuery = "SELECT * FROM users";
        
              $result =  $con->query($lclQuery);
        
              if($result->rowCount() > 0) {
        
              while($row = $result->fetch_assoc()) {
        
                echo '<hr />';
                echo '<table>';
                echo '<tr><td>ID:</td><td>'.$row["id"].'</td></tr>';
                echo '<tr><td>Avatar:</td><td><img src="'.$row["avatar"].'" width="100px" /></td></tr>';
                echo '<tr><td>Firstname:</td><td>'.$row["firstname"].'</td></tr>';
                echo '<tr><td>Lastname:</td><td>'.$row["lastname"].'</td></tr>';
                echo '<tr><td>Country:</td><td>'.$row["country"].'</td></tr>';
                echo '</table>';
        
            }
        }
        else {
           echo "0 results";
        }
        

        使用如上。以上代码绝对有效。

        【讨论】:

          猜你喜欢
          • 2018-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-09
          相关资源
          最近更新 更多