检查结果行数>0的替代方法

rmbxnbpk  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(366)

到目前为止,我通过以下方式检查num\u rows>0:

  1. $sql = "SELECT name FROM tbl_criteria WHERE ID =?";
  2. $stmt = mysqli_stmt_init($conn);
  3. if(!mysqli_stmt_prepare($stmt, $sql)){
  4. header("location: /XX");
  5. }else{
  6. mysqli_stmt_bind_param($stmt, "i", $cId);
  7. mysqli_stmt_execute($stmt);
  8. $result = mysqli_stmt_get_result($stmt);
  9. mysqli_fetch_all($result,MYSQLI_ASSOC);
  10. if($result-> num_rows >0{
  11. echo 'Appear if rows >0';
  12. foreach($result as $row){
  13. echo 'Appear for each result';
  14. }
  15. }
  16. }

所以突然之间这就不管用了。我总是得到0个结果。我听说打电话是很重要的 mysqli_stmt_store_result() 在访问num\u行之前,否则通常返回0。我以为我在用 $result = mysqli_stmt_get_result($stmt); 还是我错了?我在一个网络服务器上托管我的网站,所以它可能是因为一个更新以及。几天前还不错。

ybzsozfc

ybzsozfc1#

您的代码不工作很可能是由于您有多个语法错误。我建议阅读如何在mysqli中获取错误消息?
如果您想继续使用mysqli,那么就不需要这种过于复杂的代码。您可以简单地将所有结果提取到一个数组中。没有必要使用 num_rows .

  1. $value = "cId";
  2. $stmt = $conn->prepare("SELECT name FROM tbl_criteria WHERE ID =?");
  3. $stmt->bind_param('s', $value);
  4. $stmt->execute();
  5. $result = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
  6. // If no rows were fetched the array will be empty and condition will be false
  7. if ($result) {
  8. echo 'Appear if rows >0';
  9. foreach ($result as $row) {
  10. echo 'Appear for each result';
  11. }
  12. }

相关问题