Maison >développement back-end >tutoriel php >Comment accéder à MySQLi depuis une classe externe en PHP 7.0 ?

Comment accéder à MySQLi depuis une classe externe en PHP 7.0 ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 08:21:30222parcourir

How to Access MySQLi from an External Class in PHP 7.0?

Accès à MySQLi à partir d'une classe externe en PHP

Problème :

Après la mise à niveau depuis PHP 5.6 à 7.0, une configuration existante qui utilise à la fois les classes MySQL et MyAPI a rencontré des problèmes. Plus précisément, l'accès à la connexion à la base de données à partir de la classe MyAPI entraîne une erreur de serveur interne 500.

Solution :

Plusieurs pratiques contribuent à cette erreur :

  1. Éviter l'héritage : L'extension de MyAPI à partir d'une classe de base de données est redondante et inutile.
  2. Supprimer la classe de base de données redondante : La classe de base de données ne sert à rien objectif car il établit principalement une connexion, qui peut être facilement réalisée via la classe mysqli vanilla.
  3. Créez une instance de base de données centralisée : Établissez une instance unique et globale de la connexion à la base de données et transmettez-la à chaque classe qui nécessite un accès à la base de données.

Structure du code :

Créez trois fichiers :

  • base de données. php : Contient la logique de connexion à la base de données.
  • myapi.php : Définit la classe MyAPI avec injection de dépendances pour la connexion à la base de données.
  • app. php : agit comme point d'entrée et instancie la classe MyAPI, en transmettant la connexion à la base de données.

database.php :

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

myapi.php :

<code class="php"><?php
class MyAPI
{
    protected $db;

    public function __construct($db)
    {
        $this->db = $db;
    }

    public function getUser($id)
    {
        // Define SQL query and subsequent operations to fetch user data.
    }
}</code>

app.php :

<code class="php"><?php
require 'database.php';
require 'myapi.php';

$api = new MyAPI($db);
$user = $api->getUser($_POST['id']);</code>

En suivant ces directives et en séparant les problèmes de base de données des fonctionnalités de classe, le le problème de l'accès à MySQLi à partir d'une classe externe peut être résolu efficacement.

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