-1

私はクラス コンストラクトから永続的なデータを実験してきました。パブリック __construct を介して永続的な接続を確立しようとしているので、クラス全体でデータベース接続情報を使用できます。私のコードは次のとおりです。

class Inbox {
   # private $Database;
    public function __construct() {
        $this->$Database = new mysqli ('localhost','root','xxx','test');
    }
    public static function TestConnect (){
        if (self::Database){
            echo "Success When Connecting To Database";
        }else{
            echo "Problems When Connecting To Database";
        }
    }
    public static function TestSelect(){
        $Select = $this->Database->prepare("SELECT * FROM test");
        $Select->execute();
        $Select->bind_result($Test_ID, $Test_UName);
        $Select->fetch();

        print_r($Select);
    }
}

$Foo = new Inbox();
$Foo->TestSelect();

今。実行時

次のエラーが表示されます。

注意: 未定義の変数: Database in C:\xampp\htdocs\InboxFeature\Api\Class.php 行 15

致命的なエラー: 15 行目の C:\xampp\htdocs\InboxFeature\Api\Class.php の空のプロパティにアクセスできません


行を次のように変更します。

$Select = self::Database->prepare("SELECT * FROM test");

そしてコメントを外します: private $Database;

次のエラーが表示されます。

解析エラー: C:\xampp\htdocs\InboxFeature\Api\Class.php 行 25 の構文エラー、予期しない '->' (T_OBJECT_OPERATOR)

したがって、私の全体的な質問は、どこが間違っているのかという__construct()ことです。メソッドを使用して Stackoverflow に示されている例を見てきました。どこが間違っているのかわかりません。


提供された回答を使用します。次の変更を追加しました。

 private static $Database;
    public function __construct() {
        self::$Database = new mysqli ('localhost','root','xxx','test');
    }
    public static function TestSelect(){
        $Select = self::$Database->prepare("SELECT * FROM test");
        $Select->execute();
        $Select->bind_result($Test_ID, $Test_UName);
        $Select->fetch();

        echo $Test_ID;
    }

これはうまくいきました。速やかなご返信ありがとうございます

4

1 に答える 1