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 :
Solution
Pour résoudre ces problèmes, les éléments suivants étapes recommandées :
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!