Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL数组错误_Php_Mysql_Sql_Database_Web - Fatal编程技术网

PHP MySQL数组错误

PHP MySQL数组错误,php,mysql,sql,database,web,Php,Mysql,Sql,Database,Web,我在使用PHP/MySQL即时消息系统的函数时遇到问题。变量($sql)定义为MySQL查询,然后查询该查询并返回资源ID。但是,下面的while语句返回“Array”而不是其假定的内容 <?php // Fetches a summary of the conversations. function fetch_conversation_summary(){ $sql = "SELECT `conv

我在使用PHP/MySQL即时消息系统的函数时遇到问题。变量($sql)定义为MySQL查询,然后查询该查询并返回资源ID。但是,下面的while语句返回“Array”而不是其假定的内容

    <?php

// Fetches a summary of the conversations.
function fetch_conversation_summary(){
        $sql = "SELECT
                                `conversations`.`conversation_id`,
                                `conversations`.`conversation_subject`,
                                MAX(`conversations_messages`.`message_date`) AS `conversation_last_reply`,
                                MAX(`conversations_messages`.`message_date`) > `conversations_members`.`conversation_last_view` AS `conversation_unread`
                        FROM `conversations`
                        LEFT JOIN `conversations_messages` ON  `conversations`.`conversation_id` = `conversations_messages`.`conversation_id`
                        INNER JOIN `conversations_members` ON `conversations`.`conversation_id` = `conversations_messages`.`conversation_id`
                        WHERE `conversations_members`.`user_id` = {$_SESSION['user_id']}
                        AND `conversations_members`.`conversation_deleted` = 0
                        GROUP BY `conversations`.`conversation_id`
                        ORDER BY `conversation_last_reply` DESC";

        $result = mysql_query($sql);

        $conversations = array();

        while (($row = mysql_fetch_assoc($result)) !== false){
                $conversations[] = array(
                        'id'                            => $row['conversation_id'],
                        'subject'                       => $row['conversation_subject'],
                        'last_reply'            => $row['conversation_last_reply'],
                        'unread_messages'       => ($row['conversation_unread'] == 1),
                );
        }

        return $conversations;
}

// Fetches all of the messages in the given converstion.
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);
    echo $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 );
        }


// Sets the last view time to the current time for the given conversation.
function update_conversation_last_view($conversation_id){
        $conversation_id = (int)$conversation_id;
        $time = time() + 18000;
        $sql ="UPDATE `conversations_members`
                        SET `conversation_last_view` = {$time}
                        WHERE `conversation_id` = {$conversation_id}
                        AND `user_id` = {$_SESSION['user_id']}";

        mysql_query($sql);     
}

 // Creates a new conversation, making the given users a member.
function create_conversation($user_ids, $subject, $body){
        $subject        = mysql_real_escape_string(htmlentities($subject));
        $body           = mysql_real_escape_string(htmlentities($body));

        mysql_query("INSERT INTO `conversations` (`conversation_subject`) VALUES ('{$subject}')");

        $conversation_id = mysql_insert_id();

        $sql = "INSERT INTO `conversations_messages` (`conversation_id`, `user_id`, `message_date`, `message_text`)
                        VALUES ({$conversation_id}, {$_SESSION['user_id']}, UNIX_TIMESTAMP(), '{$body}')";

        mysql_query($sql);

        $values = array("({$conversation_id}, {$_SESSION['user_id']}, UNIX_TIMESTAMP(), 0)");

        foreach ($user_ids as $user_id){
                $user_id = (int)$user_id;

    $values = array("({$conversation_id}, {$_SESSION['user_id']}, UNIX_TIMESTAMP(), 0)");            }

        $sql = "INSERT INTO `conversations_members` (`conversation_id`, `user_id`, `conversation_last_view`, `conversation_deleted`)
                        VALUES " . implode(", ", $values);

                        mysql_query($sql);
}


// Checks to see if the given user is a member of the given conversation.
   function validate_conversation_id($conversation_id){
   $conversation_id = (int)$conversation_id;

   $sql = "SELECT COUNT(1)
   FROM `conversations_members`
   WHERE `conversation_id` = {$conversation_id}
   AND `user_id` = {$_SESSION['user_id']}
   AND `conversation_deleted` = 0";

   $result = mysql_query($sql);
   return(mysql_result($result, 0) == 1);
   }
    // Adds a message to the given conversation.
    function add_conversation_message($conversation_id, $text){
            $conversation_id        = (int)$conversation_id;
                $text                   = mysql_real_escape_string(htmlentities($text));

        $sql = "INSERT INTO `conversations_messages` (`conversation_id`, `user_id`, `message_date`, `message_text`)
                        VALUES ({$conversation_id}, {$_SESSION['user_id']}, UNIX_TIMESTAMP(), '{$text}')";

        mysql_query($sql);

        mysql_query("UPDATE `conversations_members` SET `conversation_deleted` = 0 where `conversation_id = {$conversation_id}");
}

// Deletes (or marks as deleted) a given conversation.
function delete_conversation($conversation_id){
        $conversation_id = (int)$conversation_id;

        $sql = "SELECT DISTINCT `conversation_deleted`
                        FROM `conversations_members`
                        WHERE `user_id` != {$_SESSION['user_id']}
                        AND `conversation_id` = {$conversation_id}";

        $result = mysql_query($sql);

        //if (mysql_num_rows($result) == 1 && mysql_result($result, 0) == 1){
        if (mysql_num_rows($result) == 0){
                mysql_query("DELETE FROM `conversations` WHERE `conversation_id` = {$conversation_id}");
                mysql_query("DELETE FROM `conversations_members` WHERE `conversation_id` = {$conversation_id}");
                mysql_query("DELETE FROM `conversations_messages` WHERE `conversation_id` = {$conversation_id}");
        }else{
                $sql = "UPDATE `conversations_members`
                                SET `conversation_deleted` = 1
                                WHERE `conversation_id` = {$conversation_id}
                                AND `user_id` = {$_SESSION['user_id']}";

                mysql_query($sql);

        }
}
?>

确保它打印数组,因为$messages就是这样的。如果要打印$messages的内容,可以使用或

$result的类似原因$结果是资源类型(至少只要查询成功)。打印它没有意义,因为它是一个内部引用。您必须将其传递给一个类似的函数,该函数可以处理这样的资源



关于更新后的问题:此输出告诉您数组为空且不包含任何元素。您确定SQL查询返回了任何行吗?

您看到了什么错误消息?没有错误消息,但是“echo$messages”只给了我“array”,我在回显时得到了“resource id#16”$result@user3308065这是绝对正常的我该如何修复这个错误对不起,不是错误,但是“数组”,这样我就可以查看查询的详细信息请给我一个example@user3308065他给了你两个链接,我保证这些都有足够的例子。对不起,我是一个大noob当谈到PHP和MySQL你需要做像
echo($messages[0]['text'])
查看MySQL返回的第一条消息。我已经尝试了这些方法,但没有效果