$ query mysql_fetch_assoc()错误

时间:2013-05-20 23:17:47

标签: php mysqli

这是我输入两个文本字段,发件人和邮件的代码。但是,我的网页一直给我这个错误:警告: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;

    }

2 个答案:

答案 0 :(得分:3)

用反引号替换撇号:

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

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

第二个关闭,显示mysql错误会向您显示此信息(将or die(mysql_error())附加到代码查询行),或者实际上将查询复制/粘贴到phpMyAdmin中。

最后,mysql_query系列函数为deprecated as of PHP 5.5。你应该switch to PDO or mysqli代替。

答案 1 :(得分:1)

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

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