私はクラス コンストラクトから永続的なデータを実験してきました。パブリック __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;
}
これはうまくいきました。速やかなご返信ありがとうございます