Maison >développement back-end >tutoriel php >Comment utiliser correctement une connexion PDO sur plusieurs classes en PHP ?
Un message d'erreur indiquant « Erreur non détectée : appel à une base de données de méthode non définie ::prepare()" peut survenir lors de la tentative d'utilisation d'une connexion PDO dans une classe distincte. Cette erreur provient d'une mauvaise compréhension de la façon dont la programmation orientée objet (POO) interconnecte les objets.
1. Repensez votre classe de base de données :
La classe de base de données existante ne sert à rien. Au lieu de cela, concentrez-vous sur la création d'une classe wrapper si elle étend les fonctionnalités de PDO.
2. Établissez une connexion à la base de données centrale :
Instancier un objet $db autonome à l'aide de PDO ou de votre classe de base de données améliorée. Cette connexion unique servira de pierre angulaire à toutes les futures activités de base de données.
3. Transmettez la connexion en tant que paramètre de constructeur :
Chaque classe nécessitant un accès à la base de données doit recevoir la connexion $db en tant qu'argument de constructeur. Cette approche garantit un accès transparent à la base de données dans l'ensemble de votre application.
Considérez les améliorations suivantes base de code :
database.php :
$host = '127.0.0.1'; $db = 'test'; $user = 'root'; $pass = ''; $charset = 'utf8'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $opt = [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, \PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new \PDO($dsn, $user, $pass, $opt);
user.php :
class User { /* Properties */ private $conn; /* Get database access */ public function __construct(\PDO $pdo) { $this->conn = $pdo; } /* List all users */ public function getUsers() { return $this->conn->query("SELECT username, usermail FROM user")->fetchAll(); } }
app .php :
include 'database.php'; $user = new User($pdo); $list = $user->getUsers(); foreach($list as $test) { echo $test["username"],"\n"; }
Cette base de code raffinée illustre l'utilisation correcte de Connexions PDO dans plusieurs classes, garantissant un fonctionnement sans erreur et des pratiques de codage élégantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!