Maison >base de données >tutoriel mysql >Comment accéder correctement à une connexion à une base de données MySQLi à partir de différentes classes en PHP ?

Comment accéder correctement à une connexion à une base de données MySQLi à partir de différentes classes en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-08 15:12:111031parcourir

How to Properly Access a MySQLi Database Connection from Different Classes in PHP?

Utilisation de MySQLi à partir d'une autre classe en PHP : une ventilation détaillée

Dans cette requête, l'utilisateur a mis à niveau MySQL vers MySQLi après la transition de PHP 5,6 à 7,0. Après avoir suivi le guide « Utilisation de MySQLi dans d'autres classes », ils ont rencontré l'erreur interne du serveur 500 lors de la tentative d'accès à une connexion à une base de données à partir d'une autre classe.

Pour comprendre l'erreur, examinons le code PHP de l'utilisateur. Ils ont trois classes : une classe Database pour établir la connexion MySQLi, une classe MyAPI où ils tentent d'accéder à cette connexion et une fonction distincte où ils effectuent la requête de base de données proprement dite.

Analyse des erreurs

Le problème vient de plusieurs problèmes fondamentaux dans le code :

  1. Classe incorrecte Hiérarchie : L'extension de la classe User à partir de la classe Database est une approche incorrecte.
  2. Classe de base de données redondante : La classe Database ne sert essentiellement à aucun objectif pratique et complique inutilement le code.

Solution

Pour résoudre ces problèmes, les éléments suivants étapes recommandées :

  1. Supprimer la classe Database : Comme elle n'offre aucune fonctionnalité significative, la classe Database doit être éliminée.
  2. Créer une classe unique Instance $db : Établissez une instance unique de $db à l'aide de MySQLi Vanilla.
  3. Passez $db comme paramètre de constructeur : Dans chaque classe nécessitant une connexion à la base de données, transmettez l'instance $db comme paramètre de constructeur.

Voici un code PHP amélioré exemple :

database.php

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');

myapi.php

<?php
class MyAPI
{
    protected $db;

    public function __construct($db, $request_uri, $postData, $origin)
    {
        $this->db = $db;
    }

    public function getUser($id)
    {
        $sql = "SELECT * FROM users where>

app.php

<?php
# require_once 'Database.php';
# require_once 'myapi.php';
require 'vendor/autoload.php'; // autoloading is a must

$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser($_POST['id']);

Avec ces modifications, l'utilisateur devrait être en mesure d'établir un bon MySQLi connexion et effectuer des requêtes de base de données à partir de différentes classes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn