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
Fatal error: Call to a member function fetchAll() on a non-object in pdo
提问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安装正确吗?

