Maison >développement back-end >tutoriel php >Pourquoi mon instruction préparée MySQLi renvoie-t-elle une erreur « Appel à une fonction membre exécuter () sur un non-objet » ?
Lors de l'utilisation d'instructions préparées avec mysqli, il est important de respecter des directives spécifiques pour garantir un bon fonctionnement.
Dans le code fourni, le erreur :
Fatal error: Call to a member function execute() on a non-object in ...
suggère que l'instruction préparée n'est pas correctement liée aux variables avant l'exécution. Pour résoudre ce problème :
// Bind parameters to variables $name = 'one'; $age = 1; $stmt->bind_param('si', $name, $age);
Mysqli est un choix approprié pour utiliser des instructions préparées en PHP. Il s'agit d'une interface de base de données établie et bien documentée.
<?php // Establish database connection $mysqli = new mysqli('localhost', 'root', 'root', 'test'); // Prepare statement $stmt = $mysqli->prepare('INSERT INTO users (name, age) VALUES (?, ?)'); // Bind variables $name = 'one'; $age = 2; $stmt->bind_param('si', $name, $age); // Insert data with prepared statement $stmt->execute(); // Check for errors if ($mysqli->error) { echo 'Error: ' . $mysqli->error; } else { // Data inserted successfully } // Prepare select statement $stmt = $mysqli->prepare('SELECT * FROM users WHERE name = ?'); // Bind variable $name = 'one'; $stmt->bind_param('s', $name); // Execute select query $stmt->execute(); // Fetch results $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo $row['id'] . ' - ' . $row['name'] . ' - ' . $row['age'] . '<br>'; } // Close statement and connection $stmt->close(); $mysqli->close(); ?>
Cet exemple complet montre l'ensemble du processus depuis l'établissement d'une connexion jusqu'à l'insertion et la sélection de données avec des instructions préparées, y compris la gestion des erreurs.
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!