我有一个'Database.php'来处理数据库连接,并将mysql连接移交给调用Database类的类。
database.php中
<?php
class Database {
private $domain = "localhost";
private $usr = "root";
private $pwd = "password";
private $dbname = "testdb";
private $db;
function __contruct() {
}
function connect() {
$this->db = mysqli_connect($domain, $usr, $pwd, $dbname);
if ($db->connect_errno > 0) {
die("DbConn Fail: \n ".$mysqli->connect_error);
} else {
return $this->db;
}
}
}
?>
我有以下测试类试图调用Database类来检索连接,然后在它的SQl语句中使用连接......
test.php的
<?php
include('Database.php');
$db = new Database();
$conn = $db->connect();
$sql = "SELECT custid FROM `testdb`.`customer`";
$res = mysqli_query($conn, $sql);
$nrows = mysqli_num_rows($res);
echo "Num Rows Found: " . $nrows . "<br>";
if($res) {
echo "fetching...<br>";
while ($row = mysqli_fetch_assoc($res)){
echo "Found Customer ID: " . $row['custid'] . "<br>";
}
}
?>
我面临的问题是在'Database.php'类中。每当通过'connect()'函数建立成功的连接时,Database类将返回一个有效的mysql连接到调用'Database'类的类,但是从下面的demo中它没有按预期工作。
我可以知道应该怎么做来解决上述问题吗?
答案 0 :(得分:2)
您应该包含链接而不是类初始化:
$res = mysqli_query($conn, $sql)
你的连接也错了:
$this->db = mysqli_connect($this->domain, $this->usr, $this->pwd, $this->dbname);
也:
if ($this->db->connect_errno > 0) {
答案 1 :(得分:0)
命名您的mysqli_connect
结果变量$db
而不是ie $connectionHandle
正在寻找麻烦,正如您所看到的那样,您刚刚做到了 - 当您将$db
对象传递给mysqli_query()
而不是连接句柄。正确的代码应该是:
$res = mysqli_query($conn, $sql);
不要“保存”变量名称。 总是伤害。