Php 使用返回非对象错误的PDO连接到数据库
我试着在PDOs上遵循这个教程,完全遵循它,但是当尝试在一个非常基本的级别上连接时,它输出了一个非对象错误。我做了一个小测试来确定$query变量的布尔值,结果显示为false,这导致了错误。它为什么要这样做 教程 错误 致命错误:对中的非对象调用成员函数fetch() 第16行的C:\xampp\htdocs\projects\dentaloffice\php\php\u connect.php 代码Php 使用返回非对象错误的PDO连接到数据库,php,object,pdo,fetch,sqlconnection,Php,Object,Pdo,Fetch,Sqlconnection,我试着在PDOs上遵循这个教程,完全遵循它,但是当尝试在一个非常基本的级别上连接时,它输出了一个非对象错误。我做了一个小测试来确定$query变量的布尔值,结果显示为false,这导致了错误。它为什么要这样做 教程 错误 致命错误:对中的非对象调用成员函数fetch() 第16行的C:\xampp\htdocs\projects\dentaloffice\php\php\u connect.php 代码 <?php $config['db'] = array( 'host'
<?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'];
}
?>
创建一个phpinfo文件,检查是否启用了PDO,是否安装了正确的驱动程序。确保已启用PDO
顺便说一句,您可以这样检查查询验证:
if($query) // will return true if succefull else it will return false
{
// code here for true
}
更改此行:
$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()
是一个很好的做法。现在你可能明白了原因。) 请添加print\r($db->errorInfo())代码>行到false
分支。它显示了什么?如果你想打印变量,你需要使用双引号而不是单引号,@raina77ow,这是它返回的:Array([0]=>3D000[1]=>1046[2]=>未选择数据库)
解决了它:P这是一个真正的延迟错误。我使用的是一个表名,而不是实际的数据库名。我的大坏蛋。非常感谢!如果PDO没有启用,错误将完全不同(在另一个地方)。哦,哇!成功了。我从来没有想到这就是问题所在。我想,我甚至可能是为了让它看起来更干净而加上了空格。非常感谢,@raina77ow!