get_result() - > fetch_assoc()返回0,即使num rows为2也是如此

时间:2015-10-07 19:37:15

标签: php database mysqli

我有一个访问数据库的功能,以根据收件人UserID获取邮件。

function GetUnreadMessages($recipientID, $db) {
  $sql  = 'SELECT
                senderID AND headline AND message
            FROM
                Message
            WHERE
                 recipientID = ? AND unread = 1
            LIMIT 100';
  $stmt = $db->prepare($sql);
  if ($stmt) {
    $stmt->bind_param('i', $recipientID);
    $stmt->execute();
    return $stmt->get_result();
  }
  else {
    http_redirect("", array(
    section => "info",
    message => "Internal error while recieving messages!"
    ));
  }
}

然后我称之为。 $messageCount是2应该是因为我的testuser有两条消息。

 $messages = GetUnreadMessages($userID, $db);
 $messageCount =  $messages->num_rows;  // 2

但是当我称之为$messages总是为0时。任何想法为什么?

 $message = $messages->fetch_array(MYSQL_ASSOC);  // 0

2 个答案:

答案 0 :(得分:2)

您将字段与,而不是AND分开。

SELECT senderID, headline, message

答案 1 :(得分:2)

这为您提供了值的逻辑AND作为一个结果:

select senderID AND headline AND message

你想要这个:

select senderID, headline, message