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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12316185/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 03:19:51  来源:igfitidea点击:

Fatal error: Call to a member function fetchAll() on a non-object in pdo

phppdo

提问by Yousuf Memon

I'm new to pdo just tried the following and getting fatal error.

我是 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);

回答by Fluffeh

Change:

改变:

mysql:localhost;widet_corp

to

mysql:host=localhost;dbname=widget_corp

Also in your posted code:

同样在您发布的代码中:

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

you have the table name inside single quotes. In Mysql you should use a backtick instead for tables and columns.

你有单引号内的表名。在 Mysql 中,您应该对表和列使用反引号。

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

回答by xdazz

PDO::queryreturn falseif your query is wrong.

PDO::queryfalse如果您的查询错误,则返回。

SELECT * FROM 'users'

SELECT * FROM 'users'

should be

应该

SELECT * FROM `users`

回答by Kasia Gogolek

$pdo->query()will return false if the query fails. You're not initiating the pdo correctly, and you probably want to check if the query didn't return an error, so:

$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);
}

回答by Lucas

Use this code instead:

请改用此代码:

$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);

If this doesn't work, are you sure that PDOis installed properly?

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