Prepared Statements中num_rows的替代方法是Unbuffered Query

时间:2015-07-21 21:56:07

标签: php mysqli prepared-statement

MySQLi Prepared Statements是默认的无缓冲结果集,这意味着我们不能使用num_rows,除非我们使用$stmt->store_result();显式创建缓冲结果集。

在我的情况下,我只需要使用$stmt->num_rows来确保从数据库中提交结果。所以我使用了像

这样的东西
 if($stmt->num_rows > 0){
    while($stmt->fetch())
                {
                 echo  '<li>'.$name.'</li>';
                }
         }else {
                echo "No Such a Data";
               }

现在我的问题是,如果我不想将未缓存的查询更改为缓冲的,那么检查数据库服务器中是否存在结果的替代方法是什么?

1 个答案:

答案 0 :(得分:0)

您只需检查返回的语句是否为资源,然后查看行计数,然后根据需要进行提取。

$stmt = $mysqliObject->query("SELECT * FROM table");

if(is_resource($stmt) && $stmt->num_rows > 0) {
  // we got a result and have data in this table
  while($item = $stmt->fetch()) {
     // $item is our data from this row
  }
}