0

我有一个“Database.php”,它可以处理数据库连接,并将 mysql 连接移交给调用数据库类的类。

数据库.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 语句中使用该连接......

测试.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 类都会向调用“Database”类的类返回有效的 mysql 连接,但从下面的演示中它无法按预期工作。

我可以知道我应该怎么做才能解决上述问题吗?

4

2 回答 2

2

您应该包括链接而不是类初始化:

$res = mysqli_query($conn, $sql)

你的连接也是错误的:

$this->db = mysqli_connect($this->domain, $this->usr, $this->pwd, $this->dbname);

还:

if ($this->db->connect_errno > 0) {
于 2012-09-11T11:24:05.320 回答
0

命名你的mysqli_connect结果变量$db而不是 ie$connectionHandle是在自找麻烦,正如你所看到的,你刚刚做到了 - 因为你将$db对象传递给mysqli_query()而不是连接句柄。正确的代码应该是:

$res = mysqli_query($conn, $sql);

不要“保存”变量名。它总是很痛。

于 2012-09-11T11:25:38.690 回答