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
Libérer: 2024-12-08 15:12:11
original
1083 Les gens l'ont consulté

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');
Copier après la connexion

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>
Copier après la connexion

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']);
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal