Votre code PHP déclenche un message d'erreur indiquant que vous tentez d'accéder à la méthode préparer() d'un objet qui n'existe pas. Examinons le code fourni pour identifier la source de cette erreur :
$DBH = new mysqli("host", "test", "123456", "dbname"); function selectInfo($limit, $offset) { $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?"); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); } selectInfo();
L'erreur provient de la portée de la variable $DBH. Dans la fonction selectInfo(), vous essayez d'accéder à $DBH sans spécifier sa portée. Puisque $DBH n'est pas défini dans la fonction, il n'est pas accessible directement.
Pour résoudre ce problème, vous disposez de plusieurs options :
1. Utilisez le mot-clé global :
function selectInfo($limit, $offset) { global $DBH; $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?"); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); }
2. Passez $DBH comme paramètre de fonction :
function selectInfo($DBH, $limit, $offset) { $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?"); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); }
3. Créez une fonction pour récupérer $DBH :
function getDBH() { static $DBH = null; if (is_null($DBH)) { $DBH = new mysqli("host", "test", "123456", "dbname"); } return $DBH; } function selectInfo($limit, $offset) { $DBH = getDBH(); $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?"); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); }
En implémentant l'une de ces options, vous établirez la portée correcte pour $DBH dans la fonction selectInfo(), lui permettant d'accéder à la base de données nécessaire. connexion.
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!