【问题标题】:PHP var_dump returns reesource(16)PHP var_dump 返回 reesource(16)
【发布时间】:2014-02-14 06:23:57
【问题描述】:

我有以下代码:

function fetch_conversation_messages($conversation_id){
    $conversation_id = (int)$conversation_id;

    $sql = "SELECT
                            `conversations_messages`.`message_date`,
                            `conversations_messages`.`message_date` > `conversations_members`.`conversation_last_view` AS `message_unread`,
                            `conversations_messages`.`message_text`,
                            `users`.`user_name`
                    FROM `conversations_messages`
                    INNER JOIN `users` ON `conversations_messages`.`user_id` = `users`.`user_id`
                    INNER JOIN `conversations_members` ON `conversations_messages`.`conversation_id` = `conversations_members`.`conversation_id`
                    WHERE `conversations_messages`.`conversation_id` = {$conversation_id}
                    AND `conversations_members`.`user_id` = {$_SESSION['user_id']}
                    ORDER BY `conversations_messages`.`message_date` DESC";

    $result = mysql_query($sql);
    var_dump($result);
    $messages = array();

    while (($row = mysql_fetch_assoc($result)) !== false){
            $messages[] = array(
                    'date'          => $row['message_date'],
                    'unread'        => $row['message_unread'],
                    'text'          => $row['message_text'],
                    'user_name'     => $row['user_name'],
            );
    }
    var_dump( $messages );

}

它应该返回如下内容:

Array ( [0] => Array ( [date] => 1322254667 [text] => one [user_name] => bob ) )

但是,它会返回

resource(16) of type (mysql result) array(0) { }

我对 PHP 和 MySQL 完全陌生,但是我尝试过检查拼写错误,回显 mysql_error,并在出现错误时终止脚本,这表明 SQL 中没有错误。

我不知道出了什么问题以及如何解决它。

请帮助我。提前致谢。

【问题讨论】:

  • 您的查询好像失败了?
  • 我是这么想的,但我看不出怎么做;你有什么想法吗?
  • 尝试echo count($messages); if print 0 no result is found in your query
  • 我做到了,但我得到的只是资源(16)类型(mysql结果)0

标签: php mysql sql arrays output


【解决方案1】:

var_dump($result); 显示resource(16) of type (mysql result) 表示您的查询正常。

var_dump($messages); 显示空数组表示您的查询结果为空。

【讨论】:

  • 您对如何修复它有任何想法。向您发送 SQL 文件是个好主意,因为我是 MySQL 和 PHP 的完全菜鸟
  • @user3308065 打印你的 sql 并尝试在 mysql 客户端中运行它,修复 sql 是你的工作:)。
  • #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 '"SELECT conversations_messages.message_date' 附近使用来自 PhpMyAdmin
  • 那你的查询有问题
  • 好的,但是(n00b 问题提醒)我该如何解决?
【解决方案2】:

对于 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他返回结果集的语句,mysql_query() 在成功时返回 resource,在错误时返回 FALSE。

对于其他类型的 SQL 语句,INSERT、UPDATE、DELETE、DROP 等,mysql_query() 在成功时返回 TRUE,在错误时返回 FALSE。

【讨论】:

    【解决方案3】:

    当您的查询有效时,mysql_query 函数应返回 resource

    要查看查询的实际返回结果,请使用mysql_fetch_assocmysql_fetch_object 等行获取函数。在您的情况下,您将获取的值放在 $row 变量中,因此您可以在其上使用 var_dump。

    while ($row = mysql_fetch_assoc($result)){
            var_dump($row);
    }
    

    尝试检查此reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 2013-11-30
      • 1970-01-01
      相关资源
      最近更新 更多