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

Php 检查结果行数的替代方法>;0,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,到目前为止,我通过以下方式检查num_rows>0: $sql = "SELECT name FROM tbl_criteria WHERE ID =?"; $stmt = mysqli_stmt_init($conn); if(!mysqli_stmt_prepare($stmt, $sql)){ header("location: /XX"); }else{ mysqli_stmt_bind_param($stmt, "i", $cId); mysqli_stmt_execute($s

到目前为止,我通过以下方式检查num_rows>0:

$sql = "SELECT name FROM tbl_criteria WHERE ID =?";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
 header("location: /XX");
}else{
 mysqli_stmt_bind_param($stmt, "i", $cId);
 mysqli_stmt_execute($stmt);
 $result = mysqli_stmt_get_result($stmt);
 mysqli_fetch_all($result,MYSQLI_ASSOC);
 if($result-> num_rows >0{
  echo 'Appear if rows >0';
  foreach($result as $row){
   echo 'Appear for each result';
   }
  }
}
突然间,这一切都不起作用了。我总是得到0个结果。我已经读到,在访问num\u行之前调用mysqli\u stmt\u store\u result()非常重要,否则它通常会返回0。我以为我在用
$result=mysqli\u stmt\u get\u result($stmt)存储结果我在一个网络服务器上托管我的网站,所以它可能也是因为更新。几天前,它工作正常。

您的代码不工作很可能是因为您有多个语法错误。我建议你读书

如果您想继续使用mysqli,那么就不需要这个过于复杂的代码。您只需将所有结果提取到一个数组中即可。没有必要使用
num\u行

$value = "cId";
$stmt = $conn->prepare("SELECT name FROM tbl_criteria WHERE ID =?");
$stmt->bind_param('s', $value);
$stmt->execute();
$result = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);

// If no rows were fetched the array will be empty and condition will be false
if ($result) {
    echo 'Appear if rows >0';
    foreach ($result as $row) {
        echo 'Appear for each result';
    }
}

严重的是,考虑切换到PDOYou真的应该切换到PDO,但是如果你想继续使用MySQL,你应该知道使用<代码> NoMyStudio是一个错误的做法。你的代码有多个语法错误。你需要停止手动检查错误。请阅读:和“几天前,它工作得很好。”-不是因为你发布的内容,这是肯定的。好吧,很抱歉我之前没有正确复制代码。我用PDO尝试了它,现在得到了以下代码
$stmt=$conn->prepare(“从tbl_标准中选择名称,其中ID=:标准”)$stmt->bindParam(':criteria',$cId)$stmt->execute()$结果=$stmt->fetch(PDO::fetch_ASSOC);虽然($row=$stmt->fetch()){echo$row['name'];foreach($result as$row){echo'test';}}
这样好还是我可以再次简化代码?@Robin注释不适合此类讨论。如果你有一个新问题,那么你可以在网站上开始一个新问题。我建议你先读这些文章;你可能会学到一些使用PDO的技巧:好吧,它对我很有用,所以我不需要再问其他问题,但谢谢