Utilisation des instructions préparées mysqli
Lors de l'utilisation d'instructions préparées avec mysqli, il est essentiel de lier correctement les paramètres avant d'exécuter la requête.
Erreur de débogage
Le fourni le code rencontre l'erreur « Appel à une fonction membre exécuter () sur un non-objet » car la liaison des paramètres n'a pas été effectuée. Selon la documentation mysqli_prepare, les marqueurs de paramètres doivent être liés à l'aide de mysqli_stmt_bind_param avant de s'exécuter.
Exemple complet avec gestion des erreurs :
Ce qui suit est un exemple plus complet qui inclut liaison des paramètres, gestion des erreurs et démontre l'insertion et la récupération de données à l'aide de préparés déclarations :
<?php // Establish database connection $mysqli = new mysqli("localhost", "root", "root", "test"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: " . $mysqli->connect_error; exit; } // Prepare insert statement $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)"); if (!$stmt) { echo "Error preparing statement: " . $mysqli->error; exit; } // Bind parameters and insert one row $name = 'One'; $age = 1; $stmt->bind_param('si', $name, $age); $stmt->execute(); if ($stmt->errno) { echo "Error executing insert: " . $stmt->error; exit; } // Insert another row with different values $name = 'Two'; $age = 2; $stmt->bind_param('si', $name, $age); $stmt->execute(); if ($stmt->errno) { echo "Error executing insert: " . $stmt->error; exit; } // Prepare select statement $stmt = $mysqli->prepare("SELECT name, age FROM users"); if (!$stmt) { echo "Error preparing statement: " . $mysqli->error; exit; } // Execute select statement and fetch results $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "{$row['name']} is {$row['age']} years old<br>"; } } // Close statement and connection $stmt->close(); $mysqli->close(); ?>
Ce code gère les erreurs lors de la préparation, de l'exécution et de la récupération des résultats de l'instruction, fournissant une démonstration plus robuste de l'utilisation des instructions préparées.
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!