-2

这是我获取两个文本字段(发件人和消息)输入的代码。但是,我的网页一直给我这个错误:警告:mysql_fetch_assoc() 期望参数 1 是资源,在 C:\Users\Administrator\Desktop\xampp\htdocs\Chat\includes\Functions\Chat.func.php 中给出的布尔值第 11 行。请帮帮我。我环顾四周,大多数人都说发生此错误是因为 $query 可能不正确。但是,我的 db_name 和 tbl_name 是正确的,$query 中的其他所有内容也是正确的。

function get_msg(){

        $query = "SELECT 'Sender', 'Message' FROM 'db_name'.'tbl_name'";

        $run = mysql_query($query);

        $messages = array();

        while($message = mysql_fetch_assoc($run)){
            $message[] = array('sender' => $message['Sender'], 
                               'message' => $message['Message']);
        }

        return $messages;

    }
4

2 回答 2

3

用反引号替换撇号:

$query = "SELECT `Sender`, `Message` FROM `db_name`.`tbl_name`";

撇号表示 SQL 中的字符串常量,而 MySQL 使用反引号来转义字段或表等内部名称,以防它们与保留字冲突。在这种情况下,您的查询实际上也可以在没有任何反引号的情况下正常工作。

其次,显示 mysql 错误会向您显示这一点(附加or die(mysql_error())到代码的查询行),或者实际上将您的查询复制/粘贴到 phpMyAdmin 中。

最后,从PHP 5.5 开始不推荐使用mysql_query该函数系列。您应该改用 PDO 或 mysqli

于 2013-05-20T23:19:35.497 回答
1

1) mysql_query 失败并返回 false。2) 使用mysqli扩展。mysql_* 已弃用。3)使用反引号而不是单引号

您需要使用backticks而不是“单引号”。否则,您只是在选择字符串。列名、数据库名和表名也是如此。这就是假设列、数据库和表存在时查询失败的原因。

于 2013-05-20T23:21:43.397 回答