使用PDO连接到数据库时返回非对象错误


Connecting to a DB using PDO returning a non object error

我试着按照本教程学习PDO,并严格遵循了它,但当尝试在非常基本的级别上进行连接时,它会输出一个非对象错误。我做了一个小测试来确定$query变量的布尔值,结果是false,这就产生了错误。为什么要这样做?:

TUTORIAL

http://www.youtube.com/watch?v=lb0NYODtGr4&feature=share&list=EC23A4AAFEA46A5CB23

错误

致命错误:对中的非对象调用成员函数fetch()C: 第16行上的''examplep''htdocs''projects''dentalofice''php''php_connect.php

代码

<?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'];
}
?>

更改此行:

$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语法非常严格,并且您的示例中的字符串被解析为没有指定数据库,因此您会看到一个错误。

顺便说一句,在PDO代码的false query/statement/result分支中,总是按照我之前的注释所示的方式检查errorInfo()是一种很好的做法。现在你可能明白为什么了。)

创建一个phpinfo文件,检查是否启用了PDO并安装了正确的驱动程序。

确保您已启用PDO。

顺便说一句,你可以这样检查查询验证:

if($query) // will return true if succefull else it will return false 
{ 
// code here for true
}