我正在尝试连接到PHP PDO并对数据运行简单查询,但是我遇到有关未创建对象的错误?我正在尝试尽可能简单,并建议不要创建单例数据库类,而是在需要时定义数据库PDO,这是用于初始(简单)查询。
这是我得到的错误。我需要做些什么来修复代码?
致命错误:在第11行的/ home / ... index.php中的非对象上调用成员函数fetch()
<?php
$dbhost = "localhost";
$dbname = "x";
$dbuser = "y";
$dbpass = "z";
$db = new PDO("mysql:host=$dbhost;db_name=$dbname", $dbuser, $dbpass);
$query = $db->query("SELECT * FROM tablename");
while ($row = $query->fetch(PDO::FETCH_ASSOC)){
echo $row['field_name'],'<br>';
}
?>
如果您有更好的方法使用php从mysql表中选择数据,请告诉我。试图学习PDO而不是mysqli。感谢
答案 0 :(得分:1)
可能是查询存在问题,例如拼写错误或表格不存在。
然后$query
不是PDOStatement,而是false
,您无法拨打false->fetch()
。
答案 1 :(得分:1)
您必须在->query
或->fetch
之间进行选择。你不能混合方法。
$sql = 'SELECT * FROM tablename';
foreach ($db->query($sql) as $row) {
echo $row['field_name'],'<br>';
}
$sth = $db->prepare("SELECT * FROM tablename");
$sth->execute();
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
echo $row['field_name'],'<br>';
}
答案 2 :(得分:1)
有你的错字:
$db = new PDO("mysql:host=$dbhost;db_name=$dbname", $dbuser, $dbpass);
应该是:
$db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
修正错字后,这段代码完美无缺:
$db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$query = $db->query("SELECT * FROM wp_blogs");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
var_dump($row).'<br>';
}