我尝试了关于PDO的本教程,完全遵循它,但是当尝试在非常基础的层次上连接时,它输出了一个非对象错误。我做了一个小测试来确定$ query变量的布尔值,它出现为false,产生错误。为什么要这样做?:
TUTORIAL
http://www.youtube.com/watch?v=lb0NYODtGr4&feature=share&list=EC23A4AFEA46A5CB23
错误
致命错误:在非对象中调用成员函数fetch() 第16行的C:\ xampp \ htdocs \ projects \ dentaloffice \ php \ php_connect.php
CODE
<?php
$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'dentaloffice'
);
$db = new PDO('mysql:host=' . $config['db']['host'] . ';dbname =' . $config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$query = $db->query("SELECT appointments.ROOM FROM appointments");
if($query === false){
echo '$query variable returned false <br>';
}else{
echo '$query variable returned true <br>';
}
while ($row = $query->fetch(PDO::FETCH_ASSOC)){
echo $row['ROOM'];
}
?>
答案 0 :(得分:4)
更改此行:
$db = new PDO('mysql:host=' . $config['db']['host'] . ';dbname =' . $config['db']['dbname'], $config['db']['username'], $config['db']['password']);
......进入这个......
$db = new PDO("mysql:host={$config['db']['host']};dbname={$config['db']['dbname']}",
$config['db']['username'], $config['db']['password']);
换句话说,在dbname
之后删除空白符号,它就会起作用。 )PDO DSN语法非常严格,并且您的示例中的字符串被解析为没有指定数据库 - 因此您看到错误。
errorInfo()
分支中的先前评论中显示的方式检查false query/statement/result
是一个好习惯。现在你可能会明白为什么。 )
答案 1 :(得分:1)
创建一个phpinfo文件并检查您是否已启用PDO并安装了正确的驱动程序。
答案 2 :(得分:1)
确保您已启用PDO。
顺便说一句,您可以像这样检查查询验证:
if($query) // will return true if succefull else it will return false
{
// code here for true
}