php - mysqli num_rows 不返回正确的行数 - 检查所有值

标签 php mysql select mysql-num-rows

如果有任何带有 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 下的那样。

Image showing messaging error

最佳答案

我设法使用 $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/

相关文章:

从下拉列表中进行 php 和 sql 查询

php - 模型中 1 个函数中的多个 MySQL 查询

MySql:通过其他表的父表的ID获取表的总和

php - 如何使用 cURL 获取 JSON 数据并解码数据?

php - 使用 MySQL 创建新闻通量,根据提供的表名和 ID 从 3 个表中选择

MySQL 错误代码 1005/errno : 150

mysql - MySQL NDB Cluster 是否考虑节点距离?如果复制品更接近,它会使用它们吗?

forms - 用于选择多个的Angular2 formControl

mysql - 将 MYSQL 转换为 Codeigniter

php - 不显示来自 mysql db 的 php 中的 blob 图像