PHP num_rows不起作用

时间:2017-06-24 07:15:41

标签: php

我正在尝试获取数据库中的行数。如果行数大于0,则脚本需要回显<p>1 or more</p>如果行数为0,则脚本应回显<p>0</p>

但脚本无效。

当行数为1时,我得到<p>1 or more</p>。当行数为0时,我仍然得到<p>1 or more</p>

有人知道什么是错的以及我如何解决它?

这是我的剧本:

$sql = "SELECT id FROM table WHERE status='1' ";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    echo    "<p>1 or more</p>";
  }                   
} else {

  echo "<p>0</p>";
}
$conn->close();

3 个答案:

答案 0 :(得分:0)

如果你使用mysqli而不是num_rows应该可以工作,但是如果你使用的是预处理语句,这将无效。 如果您不打印从表中获得的结果,则无需获取表。如果您的查询成功,则num_rows将起作用。如果存在数组而不是num_row,则$result上的print_r将起作用。否则尝试使您的查询可执行。

    $sql = "SELECT id FROM table WHERE status='1' ";
    $result = $conn->query($sql);

       if ($result->num_rows > 0) {
              echo    "<p>1 or more</p>";                  
        } else {

               echo "<p>0</p>";
        }
       $conn->close();

我建议你使用预备语句阅读更多关于预备语句的内容 Here

答案 1 :(得分:0)

您的代码看起来不错。只需尝试回显结果即可准确了解显示的结果数量。我怀疑你的结果是检索0结果。

请参阅W3教程here

    $sql = "your query here";
$result = mysqli_query($conn, $sql);

if(mysqli_num_rows($result) > 0) {
    echo "1 or more";
} else {
    echo "0";
}

答案 2 :(得分:0)

第一:如果query执行failed表示它将返回简单的booleanfalse,这样您就无法获得num_rows 1}}来自Boolean值。

以下代码可以帮助您。

$sql = "SELECT id FROM table WHERE status='1' ";
    if($result = $conn->query($sql))
    {
       if ($result->num_rows > 0) 
       {
              echo    "row count is :".$result->num_rows;                  
        } 
        else 
        {
               echo "query execution success but there is no match result ";
        } 
    }
    else
    {
         echo "query execution failed";
         echo $conn->error; 
    }

注意:在您的查询中,您需要指定正确的table name而不是table key word

"SELECT id FROM table_name WHERE status='1' "