MySQLi 在获取之前验证一个语句是否存在

MySQLi verify if a statment exist before fetching

我有一个基本的 mysqli 准备好的语句,它工作正常

$stmt = $mysqli -> prepare($sql);
$stmt->bind_param('iii', $_SESSION['user_id'], $id_alerte, $id_roster);
$stmt->execute(); 
while ($stmt->fetch()) {
 ...
}

在 while 循环之后我要添加一些其他代码(主要是 echo)。当我的语句为空时, while 下的所有内容都将被删除(不打印回声)。 我想添加一个 if 条件来验证语句是否存在,如果不存在则跳过 while 循环。我该怎么办?

我试过了

if($stmt->num_rows > 0) {  
 my while loop
}

但它不会执行循环。 想法?

在mysqli中,如果要在同一个mysqli对象内使用结果,需要调用$stmt->store_result()。 (在 php.net 的 this comment 中注明)

您修改后的代码:

$stmt = $mysqli -> prepare($sql);
$stmt->bind_param('iii', $_SESSION['user_id'], $id_alerte, $id_roster);
$stmt->execute(); 
$stmt->store_result(); 
if($stmt->num_rows > 0) {  
    while ($stmt->fetch()) {
     ...
    }
}