使用PDO连接到DB返回非对象错误

时间:2012-09-08 23:54:50

标签: php object pdo fetch sqlconnection

我尝试了关于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'];
}

?>

3 个答案:

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

顺便说一句,总是以我在PDO代码的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
}