mysqli num_rows 不 return 正确的行数 - 检查所有值

mysqli num_rows does not return correct number of rows - all values checked

如果有任何带有 message_status = 2 的消息,我会尝试显示 icon.envelop.2.gif。但是由于一些不明确的原因,这个查询 returns 0。 我在这里错过了什么?

$_SESSION['user_id']有效,$access_level有效。我已经检查了我的 table,我有 1 个输入的 message_receive 号码是正确的,我也尝试过使用 message_to_stab = 5,这是正确的号码。

这是我数据库中的信息:

这是我在会话中的信息 access_level:

这是我的代码:

$sql = "SELECT message_id FROM private_messages WHERE message_status = 2 AND (message_receive = ? OR message_to_stab = ?)";
$stmt = $mysqli->prepare($sql) or die ("Database error: <br>" . $sql . "<br><b>Error message:</b> " . $mysqli->error);
$stmt->bind_param("ii", $_SESSION['user_id'], $access_level);
$stmt->execute() or die("Something went wrong");

if($stmt->num_rows != 0){
    $html .= 'icon.envelope.2.gif';
}
else{
    $html .= 'icon.envelope.gif';
}

$stmt->free_result();
$stmt->close();

这是问题所在,没有错误,我希望两个邮件符号都像 status 下的那个。

我设法用$stmt->fetch()解决了这个问题。我不得不将查询更改为 LIMIT 1,以防止在超过 1 条未读消息可用时出错。

if($stmt->fetch()){
    $html .= 'icon.envelope.2.gif';
}
else{
    $html .= 'icon.envelope.gif';
}

PS: 欢迎更好的回答。我仍然不知道为什么 rowCount()num_rows 不起作用。