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
,这是正确的号码。
这是我数据库中的信息:
message_id = 1
message_receive = 697
message_status = 2
message_to_stab = 5 or message_to_stab = NULL
这是我在会话中的信息 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
不起作用。
如果有任何带有 message_status = 2
的消息,我会尝试显示 icon.envelop.2.gif
。但是由于一些不明确的原因,这个查询 returns 0。
我在这里错过了什么?
$_SESSION['user_id']
有效,$access_level
有效。我已经检查了我的 table,我有 1 个输入的 message_receive
号码是正确的,我也尝试过使用 message_to_stab = 5
,这是正确的号码。
这是我数据库中的信息:
message_id = 1
message_receive = 697
message_status = 2
message_to_stab = 5 or message_to_stab = NULL
这是我在会话中的信息 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
不起作用。