Lorsque vous utilisez PHP pour les opérations de base de données, c'est l'un des phénomènes courants pour rencontrer des erreurs. Parmi eux, l'erreur "appeler une méthode sur un objet qui n'est pas MySQLI_RESULT" est généralement liée au traitement des résultats de la requête de base de données. Analysons la cause de cette erreur et fournissons des idées sur la façon de le résoudre.
Dans PHP, lorsque nous utilisons l'extension MySQLI pour les opérations de base de données, nous exécutons généralement des requêtes et prévoyons obtenir un jeu de résultats à partir de la base de données, qui est un objet MySQLI_RESULT . Cet objet peut utiliser une série de méthodes pour accéder aux résultats d'une requête.
Par exemple, exécutez la requête SQL suivante:
$sql = "SELECT * FROM users WHERE id = 1";
$result = $mysqli->query($sql);
La variable de résultat $ doit être un objet mysqli_result . Si la requête réussit, vous pouvez continuer à l'utiliser pour obtenir les données de requête:
$row = $result->fetch_assoc(); // Obtenez une ligne de données
Cependant, dans certains cas, $ le résultat peut ne pas être de type mysqli_result , mais un autre objet ou variable. À l'heure actuelle, une erreur comme "appeler une méthode sur un objet qui n'est pas MySQLI_RESULT" sera signalée.
Les causes de cette erreur sont généralement les suivantes:
La requête a échoué : si la méthode Query () ne parvient pas à s'exécuter, elle renvoie False au lieu de l'objet mysqli_result . À l'heure actuelle, si vous continuez à appeler fetch_assoc () ou à d'autres méthodes sur $ Result , une erreur de type se produira.
Par exemple:
$result = $mysqli->query($sql);
if ($result === false) {
die("La requête a échoué: " . $mysqli->error);
}
Ce code garantit que la méthode MySqli_Result ne se poursuit pas lorsque la requête échoue, évitant ainsi les erreurs de type.
Erreur de connexion : si la connexion de la base de données échoue, l'objet $ mysqli lui-même ne fonctionne pas correctement. Assurez-vous que la connexion de la base de données est réussie:
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
Si la connexion de la base de données n'est pas réussie, les requêtes suivantes ne seront pas exécutées, le résultat $ ne sera donc pas de type mysqli_result .
Erreur d'appel : Parfois, en raison de problèmes logiques, le programme peut appeler des méthodes telles que fetch_assoc () à un endroit incorrect, ce qui entraîne un résultat de résultats de requête.
Lors de la résolution de ce problème, vous pouvez ajouter du code de débogage pour vérifier le type de résultat $ pour confirmer qu'il s'agit d'un objet mysqli_result :
var_dump($result);
Pour éviter cette erreur de type, assurez-vous de vérifier si $ le résultat est un objet MySQLI_RESULT valide après l'opération de requête. Voici un exemple de code amélioré:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM users WHERE id = 1";
$result = $mysqli->query($sql);
// Vérifiez si la requête est réussie
if ($result === false) {
die("La requête a échoué: " . $mysqli->error);
}
// Traiter les résultats de la requête
while ($row = $result->fetch_assoc()) {
echo "utilisateurID: " . $row['id'] . " utilisateur名: " . $row['name'] . "<br>";
}
?>
En vérifiant la valeur de retour de la méthode Query () , assurez-vous qu'elle renvoie un objet MySQLI_RESULT valide, afin que les erreurs de type puissent être évitées.
Lorsque vous utilisez une extension MySQLI dans PHP, les erreurs se produisent souvent avec des défaillances de requête ou des appels de type d'objets incorrects. S'assurer que l'ensemble de résultats est valide après chaque requête et éviter les méthodes d'appel sur le mauvais objet est la clé pour résoudre ce type d'erreur.