您好我已经从本书PHP Solutions Dynamic Web Design Made Easy学习了PHP并且已经开始使用mysqli api for database的部分。在编写连接函数并运行脚本之后我得到了这个错误:
这是我的代码:
function dbConnect($usertype , $connectionType = 'mysqli'){
$host = 'localhost';
$db = 'phpsols';
if($usertype == 'read'){
$user = 'psread';
$pwd = 'Aleczandru1989';
}elseif($usertype == 'write'){
$user = 'aleczandru';
$pwd = 'Aleczandru1989';
}else{
exit('Unrecognized type');
}
if($connectionType == 'mysqli'){
return new mysqli($host , $user , $pwd , $db) or die ('Cannot open database');
}else{
try{
return new PDO("mysql:host=$host;dbname=$db", $user, $pwd);
} catch (PDOException $e){
echo 'Cannot connect to database';
exit;
}
}
}
$conn = dbConnect('read');
$sql = 'SELECT * FROM images';
$result = $conn->query($sql) or die(mysqli_error()); //Line 5
$numRows = $result->num_rows;
在这种情况下,第5行是指$ result = $ conn-> query($ sql)或die(mysqli_error());. 我在这里做错了什么?
答案 0 :(得分:1)
您尝试使用dbConnect('read')创建的$ conn对象;失败。如果你要做一个var_dump($ conn);它可能表明它不是你所面对的。该错误实际上描述了什么是错误的。您尝试使用' - >查询(..'在$ conn上访问查询函数。但$ conn必须是实际具有查询功能的对象引用。此对象将创建的点是:
return new mysqli($host , $user , $pwd , $db)
和
return new PDO("mysql:host=$host;dbname=$db", $user, $pwd);
由于您显示的是其他错误,
or die ('Cannot open database');
我的猜测实际上是错误的
return new PDO("mysql:host=$host;dbname=$db", $user, $pwd);
你会发现异常。但由于致命的错误,echo语句不再可见。你必须在那里做一些调试!
我没有使用PDO的经验,但是对象的构造似乎没问题。 (但这可以帮助你:http://nl1.php.net/manual/en/class.pdo.php#84751)如果构造正常,那么检查你的数据库引擎是否真的在运行:)?