Maison >développement back-end >tutoriel php >Voici quelques options de titre, en gardant à l'esprit le format de la question et en vous concentrant sur le problème MySQLi : **Direct et concis :** * **Pourquoi ne puis-je pas accéder à ma connexion MySQLi à partir d'une classe distincte ?** * **MonS

Voici quelques options de titre, en gardant à l'esprit le format de la question et en vous concentrant sur le problème MySQLi : **Direct et concis :** * **Pourquoi ne puis-je pas accéder à ma connexion MySQLi à partir d'une classe distincte ?** * **MonS

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 12:52:30557parcourir

Here are a few title options, keeping in mind the question format and focus on the MySQLi issue:

**Direct and Concise:**

* **Why Can't I Access My MySQLi Connection from a Separate Class?**
* **MySQLi Connection Issues: Accessing from a Different Class

Comment utiliser MySQLi à partir d'une classe distincte en PHP

Introduction

Mise à niveau depuis PHP 5.6 à 7.0 nécessite le passage de MySQL à MySQLi, ce qui peut perturber les configurations existantes. Cet article traite d'un problème rencontré lors de la tentative d'accès à une connexion MySQLi à partir d'une classe distincte.

Problème

Un programmeur a tenté d'accéder à une connexion MySQLi créée dans une classe de base de données à partir d'une classe API, rencontrant une erreur de serveur interne (500) lors de l'appel de la connexion. Cependant, la connexion directe au sein de la classe API a résolu le problème.

Solution

Plusieurs modifications recommandées peuvent résoudre le problème :

  • Éliminez la classe de base de données : La classe de base de données est redondante car elle manque de fonctionnalités.
  • Créez une seule instance MySQLi : Établissez une seule instance MySQLi à l'aide de la classe mysqli native.
  • Passez l'instance en tant que paramètre : Injectez l'instance MySQLi en tant que paramètre de constructeur dans les classes nécessitant une connectivité à la base de données.

Exemple de code :

database.php :

<code class="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">class MyAPI
{
    protected $db;

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

app.php :

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

$api = new MyAPI($db, $request_uri, $postData, $origin);</code>

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