如果有任何带有 message_status = 2
的消息,我会尝试显示 icon.envelop.2.gif
。然而,出于某些不明原因,此查询返回 0。
我在这里错过了什么?
$_SESSION['user_id']
有效,$access_level
也有效。我已经检查了我的表格,我有 1 个输入具有正确的 message_receive
号码,我还尝试使用 message_to_stab = 5
,这是正确的号码。
这是我数据库中的信息:
message_id = 1
message_receive = 697
message_status = 2
message_to_stab = 5 或 message_to_stab = NULL
这是我在 session 和 access_level 中的信息:
access_level = 5
$_SESSION['user_id'] = 697
这是我的代码:
$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
不起作用。
关于php - mysqli num_rows 不返回正确的行数 - 检查所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30756166/