0

私はmysqlクラスを書こうとしています...

enter code here
class ASQL
{

public $baglanti;


   public function __construct()
{
    $host = "localhost";
    $user = "root";
    $password = "";
    $db = "mydb";



    $this->baglanti = new mysqli($host, $user, $password)
            or die('Could not connect to the database server' . mysqli_connect_error());

    $this->baglanti -> connect();

    if(!$this->baglanti -> select_db($db)){
        echo "Check the DB name!";
        echo "<br>";
        $this->baglanti->error;
        echo "<br>";
    }

}

public function Q( $query )
{
    if ($stmt = $this -> baglanti -> prepare($query))
    {
        $stmt -> execute();
        $result = $stmt -> get_result();
        while ($myrow = $result -> fetch_assoc())
        {
            var_dump($myrow);
        }
    }
    else
    {
        var_dump($this -> baglanti);
    }





}

public function __destruct()
{
    $this -> baglanti -> close();
}



}

$vt = new ASQL;
$vt -> Q("SELECT * FROM mytable");
?>

このコードは私にエラーを与えます

Access denied for user ''@'localhost' to database 'mydb'

select_db() 部分を削除しようとし、データベース名を __construct に追加しましたが、次のような別のエラーが発生しました。

No database selected

このアカウントでプロシージャル接続を試みたところ、正常に動作しました。

ところで、ご覧のとおり、最初のエラーは、空のユーザー名で接続しようとしていることを示しています...

何か不足していますか?

4

1 に答える 1

1

行 $this->baglanti->connect(); を削除します。データベースの資格情報が正しいと仮定すると、すべてが正常に機能するはずです。

メソッド mysqli::connect() はドキュメントでも言及されておらず、すでに他の人を混乱させています ( a-bug-in-mysqli-connect-method )

于 2012-05-13T10:52:28.247 に答える