致命错误:在pdo中的非对象上调用成员函数fetchAll()

时间:2012-09-07 10:21:22

标签: php pdo

我是pdo的新手,只是尝试了以下内容并导致致命的错误。

$pdo = new pdo('mysql:localhost;widget_corp;charset=utf-8', 'root', '');
$query = $pdo->query("SELECT * FROM 'users'");
$result_array = $query->fetchAll(PDO::FETCH_ASSOC);

4 个答案:

答案 0 :(得分:5)

变化:

mysql:localhost;widet_corp

mysql:host=localhost;dbname=widget_corp

同样在您发布的代码中:

$query = $pdo->query("SELECT * FROM 'users'");

您将表名称放在单引号内。在Mysql中,你应该使用反引号代替表和列。

    $query = $pdo->query("SELECT * FROM `users`");

答案 1 :(得分:4)

如果您的查询错误,

PDO::query会返回false

SELECT * FROM 'users'

应该是

SELECT * FROM `users`

答案 2 :(得分:3)

如果查询失败,

$pdo->query()将返回false。你没有正确启动pdo,你可能想检查查询是否没有返回错误,所以:

$pdo = new pdo('mysql:host=localhost;dbname=widget_corp;charset=utf-8', 'root', '');
$query = $pdo->query("SELECT * FROM `users`");
if($query !== false)
{
    $result_array = $query->fetchAll(PDO::FETCH_ASSOC);
}

答案 3 :(得分:1)

请改用此代码:

$pdo = new PDO('mysql:host=localhost;dbname=widget_corp;charset=UTF-8', 'root', '');
$query = $pdo->query("SELECT * FROM `users`");
$result_array = $query->fetchAll(PDO::FETCH_ASSOC);

如果这不起作用,您确定PDO安装正确吗?