J'ai essayé de créer la connexion à la base de données en tant que classe.Créer une connexion db en tant que classe et utiliser dans l'instruction prepare en PHP et Mysqli
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;
}
}
Il semble qu'il n'y a pas de problème avec cette classe. Je veux utiliser cette classe dans un autre fichier qui est 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();
Mais il continue d'afficher ce message d'erreur:
Fatal error: Call to undefined method DB::connect()
Dois-je créer cette requête dans une classe pour éviter ce message d'erreur? Si oui, comment puis-je faire cela? Quelqu'un peut-il m'aider?
Votre classe DB n'a pas de nom de la méthode « connecter » exactement comme l'erreur vous montre. Vous avez une méthode appelée 'connection' qui a l'air de devoir retourner votre handle alors essayez $ connection = new DB() -> connection(); – TommyBs
Pourquoi essayez-vous de vous connecter en utilisant une connexion existante? De plus, vous réalisez que chaque fois que vous appelez 'connection()' vous créez une nouvelle connexion à la base de données? Faites ceci 1k fois et vous remarquerez le décalage et vous pourriez tuer votre serveur. – bassxzero
Avez-vous une raison spécifique de créer votre propre classe 'DB'? Comme il ne semble pas offrir de fonctionnalités sur la classe 'mysqli', il vous serait beaucoup plus facile de l'utiliser. Ou PDO. – jeroen