我的错误:
( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\PDO\index.php on line 13
我的代码:
<?php
$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'learnpdo'
);
$db = new PDO('mysql:host='.$config['db']['host'].';dbname'.$config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$query = $db->query("SELECT articles . title FROM articles");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['title'];
}
我知道有很多这样的问题,但没有一个答案似乎有效。
由于
编辑:
以上是固定的,感谢下面的每个人。 :)现在我又收到了另一个错误:
Notice: Undefined index: id in C:\wamp\www\PDO\index.php on line 7
这是我的数据库:
这是我的代码:
$db = new PDO('mysql:host=localhost;dbname=learnpdo;charset=UTF-8', 'root', '');
$query = $db->query("SELECT `articles`.`title` FROM `articles`");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['id'];
}
答案 0 :(得分:5)
PDO::query()
会返回false
(显然是非对象)。这就是你的问题。 您的查询有错误。
我建议您在PDO中设置错误模式。
$db->setAttribute(PDO::ATTR_ERRMODE, PDO:ERRMODE_EXCEPTION);
然后捕获错误以查看您的查询有什么问题。
存在的不同错误模式是PDO::ERRMODE_SILENT
,PDO::ERRMODE_WARNING
和PDO:ERRMODE_EXCEPTION
。您可以在PHP manual on PDO中了解它们。在编写SQL时知道如何调试很重要,关键是不必提出这类问题。
如果要使用它,您必须选择id列。
SELECT * FROM articles
或
SELECT id, title FROM articles
答案 1 :(得分:1)
而不是:
$query = $db->query("SELECT articles . title FROM articles");
尝试:
$query = $db->query("SELECT title FROM articles");
尝试:
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['title'];
}
答案 2 :(得分:0)
此错误几乎总是意味着您的查询无法按照您希望的方式工作,因此$ query为null(或false?)而不是查询结果对象。尝试回显db->errorinfo()
并查看它是否告诉您出了什么问题。
您也可以尝试直接将查询文本粘贴到mysql中并查看结果。如果它似乎正常工作,那么问题可能在于您的数据库连接代码。