0

データベース接続を処理し、データベース クラスを呼び出すクラスに mysql 接続を渡す 'Database.php' があります。

データベース.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()」関数を介して成功した接続が確立されるたびに、データベース クラスは「データベース」クラスを呼び出しているクラスに有効な 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

ie の代わりにmysqli_connect結果変数に名前を付けることは問題を引き起こしています。正しいコードは次のとおりです。$db$connectionHandle$dbmysqli_query()

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

変数名を「保存」しないでください。それはいつも痛いです。

于 2012-09-11T11:25:38.690 に答える