クラスとしてデータベース接続を作成しようとしました。データベース接続をクラスとして作成し、PHPとMysqliのprepare文で使用
DB.class.php
class DB {
protected $servername = 'localhost';
protected $username = 'root';
protected $password = '';
protected $dbname = 'my_db';
protected $conn ;
public function connection(){
$connection = new mysqli($this->servername,$this->username,$this->password,$this->dbname);
if (mysqli_connect_errno()){
echo 'db error'.mysqli_connect_error();
exit();
}
$this->conn = $connection;
return $this->conn;
}
}
このクラスとはすべての問題が存在しないようです。私はquery.php
include 'DB.class.php';
$connection = new DB();
$connection->connect($connection);
$stmt = $connection->prepare("INSERT INTO MyGuests (name, gender, email,
town) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $name, $gender, $email, $town);
$name = 'ex_name';
$gender = 'female';
$email = '[email protected]';
$town = 'colombo';
$stmt->execute();
$stmt->close();
$connection->close();
ある別のファイルにこのクラスを使用したいが、それが示すこのエラーメッセージ保つ:
Fatal error: Call to undefined method DB::connect()
は、私は、このエラーメッセージを回避するには、クラス内でこのクエリを作成する必要がありますか?はいの場合はどうすればいいですか?誰かが私を助けることができます!
エラーがあなたを示しとおりに「接続」でなければなりません。あなたはあなたのハンドルを返すべきであるように見える '接続'と呼ばれるメソッドを持っているので、$ connection = new DB() - > connection();を試してください。 – TommyBs
なぜあなたは既存の接続を使用して接続しようとしていますか?また、あなたはあなたが 'connection()'と呼ぶたびに新しいデータベース接続を作成していることに気付きましたか?これを1k回実行すると、タイムラグに気づき、サーバーを強制終了する可能性があります。 – bassxzero
独自の 'DB'クラスを作る特別な理由はありますか? 'mysqli'クラスに対して何の機能も提供していないようであるので、あなたはそれを使うだけでもっと簡単になります。またはPDO。 – jeroen