您好我是php的新手,并尝试创建一个数据库的连接,我正在调用非对象错误的成员函数query():
我的代码分为两个文件,第一个文件包含创建连接的函数:
<?php
function dbConnect($usertype, $connectionType = 'mysqli'){
$host = 'localhost';
$db = 'phpsols';
if($usertype == 'read'){
$user = 'psread';
$pwd = 'Alexandru&Mada';
}elseif ($usertype == 'write'){
$user = 'pswrite';
$pwd = 'Alexandru&Mada';
}else{
exit('Unrecognized connection 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;
}
}
}
?>
在第二个文件中调用此方法,但它也会对非对象上的成员函数query()抛出错误调用:
<?php
require_once ('../includes/connection.inc.php');
$conn = dbConnect('read');
$sql = 'SELECT * FROM images';
$result = $conn->query($sql) or die(mysqli_error()); //error is thrown here
$numRows = $result->num_rows;
?>
我在这里做错了什么?
答案 0 :(得分:1)
您需要检查创建连接时是否有错误。将第二部分更改为此代码,显而易见,您必须在第一部分修复错误:
require_once ('../includes/connection.inc.php');
$conn = dbConnect('read');
if(!$conn)
die;
$sql = 'SELECT * FROM images';
$result = $conn->query($sql) or die(mysqli_error()); //error is thrown here
$numRows = $result->num_rows();
这个问题每天都会在SO上出现几次,有不同的变化。
答案 1 :(得分:0)
用此
替换最后一行 $numRows = $result->num_rows();