0

こんにちは私はPHPの初心者向けの本を読み終えたばかりで、自分でログインを作成し始めました。あまり遠くまで行かず、修正できないエラーが発生しました。

私は3つのファイルを持っています

    index.php

    session_start();
    require 'DB_ACCES/connect.php';

    if(isset($_POST['submit'])){
        $conn = new Mysqli();
    }

    constants.php

    define('DB_HOST', 'localhost');
    define('DB_USER' , 'root');
    define('DB_PWD' , '');

    connect.php

    require '../includes/constants.php';

    class Mysqli{

        private $conn;

        function __construct() {
            $this->conn = new mysqli(DB_HOST , DB_USER , DB_PWD) or die(mysqli_error());
        }
    }

index.phpを実行すると、次のエラーが発生します。

Fatal error: Cannot redeclare class Mysqli in D:\Program Files\xampp\htdocs\MyWork\Blog\DB_ACCES\connect.php on line 4

ここで何が間違っているので、どうすれば修復できますか?

4

3 に答える 3

3

バグはまさにエラーが述べているものです。

Mysqliは、非常に一般的なphp共有ライブラリの一部である既存のクラスですmysqli。再宣言することはできません。

クラス名をMyMysqliまたは何かに変更します。

class MyMysqli{

    private $conn;

    function __construct() {
        $this->conn = new mysqli(DB_HOST , DB_USER , DB_PWD) or die(mysqli_error());
    }
}
于 2012-10-24T20:24:34.873 に答える
2

Mysqliはすでにphpに存在します。これは、phpでは大文字と小文字が区別されないmysqliという単語自体が予約されており、どのスペルでも使用できないためです。

mysqliを拡張する独自のクラスを作成できるため、基本的に既存のmysqliクラスのすべての属性とメソッドを継承します。

class MyMySQLi extends MySQLi 
{
    private $conn;

    function __construct() {
        $this->conn = parent::__construct(DB_HOST , DB_USER , DB_PWD) or die(mysqli_error());
    }
}
于 2012-10-24T20:29:55.443 に答える
0

PHP環境には、mysqliという名前のクラスを使用可能にするモジュールであるmysqliが含まれています。クラスに別の名前を付けるだけです。

于 2012-10-24T20:25:55.127 に答える