Maison >développement back-end >tutoriel php >Pourquoi ma fonction `mysqli_query()` reçoit-elle une valeur nulle au lieu d'un objet de connexion MySQLi ?

Pourquoi ma fonction `mysqli_query()` reçoit-elle une valeur nulle au lieu d'un objet de connexion MySQLi ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 00:26:10826parcourir

Why Does My `mysqli_query()` Function Receive a Null Value Instead of a MySQLi Connection Object?

Comprendre "Attention : mysqli_query() s'attend à ce que le paramètre 1 soit mysqli, null donné dans"

Dans votre quête pour créer un CMS personnalisé , vous avez peut-être rencontré le message d'erreur redouté : "Attention : mysqli_query() s'attend à ce que le paramètre 1 soit MySQLi, null étant donné dans." Ce problème frustrant résulte souvent d'un malentendu concernant la portée des variables dans les fonctions PHP.

Cause de l'erreur

L'erreur suggère que votre fonction getPosts() tente pour accéder à la variable $con, qui stocke votre objet de connexion MySQLi, mais elle n'est pas accessible dans le cadre de cette fonction. En effet, $con est défini en dehors de la fonction getPosts().

Solution : transmettre la connexion en tant que dépendance

Pour résoudre ce problème, vous devez transmettre le objet de connexion à la fonction getPosts() en tant que dépendance. Ce faisant, la fonction peut accéder à la connexion et effectuer les opérations de base de données nécessaires.

function getPosts(mysqli $con) {
    // Code to query the database using $con
}

Prévenir d'autres erreurs

Pour minimiser les problèmes potentiels, envisagez d'utiliser ce qui suit code pour gérer les erreurs de connexion et lever des exceptions :

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions
$con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx");

getPosts($con);

Supplémentaire Conseils

  • Utilisez directement l'objet mysqli : Évitez d'utiliser mysqli_query() et optez directement pour les méthodes de l'objet mysqli, telles que $con->query().
  • Gérer les exceptions : N'oubliez pas de gérer les exceptions levées par l'objet mysqli en utilisant essayez...catch block pour fournir des messages d'erreur significatifs.
  • Éliminez les connexions : Une fois que vous avez terminé la connexion, fermez-la à l'aide de la méthode $con->close() pour libérer des ressources.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn