Appel à la fonction membre préparer() sur un non-objet : Aide PHP
Problème :
L'erreur "Appel à une fonction membre préparer() sur un non-objet" se produit lors de la tentative d'appel d'une méthode sur un objet qui ne le fait pas. existe.
Cause :
L'extrait de code fourni initialise la variable $DBH en tant que nouvel objet de connexion MySQLi, mais ne parvient pas à la transmettre en tant que paramètre ou à la déclarer comme une variable globale dans la fonction selectInfo(). Par conséquent, la fonction ne peut pas accéder à l'objet et l'erreur est générée.
Solution :
Pour résoudre ce problème, envisagez les options suivantes :
Utilisez le Global Mot clé :
function selectInfo($limit, $offset){ global $DBH; $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
Passer la connexion en tant que Paramètre :
function selectInfo(MySQLi $DBH, $limit, $offset){ $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
Créer une fonction pour obtenir la connexion à la base de données :
function getDBH(){ static $DBH = null; if (is_null($DBH)) { $DBH = new mysqli(...); } return $DBH; }
fonction selectInfo($limit, $offset){
$DBH = getDBH(); $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
}
Créer une classe Wrapper de base de données :
class Database { private $conn; public function __construct(){ $this->conn = new mysqli(...); } public function selectInfo($limit, $offset){ $stmt = $this->conn->prepare("SELECT * FROM information LIMIT ?,?"); }
Utilisez un Bibliothèque ou framework pré-construit :
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!