Maison >développement back-end >tutoriel php >Pourquoi `mysqli_query()` renvoie-t-il une erreur « Avertissement : mysqli_query() s'attend à ce que le paramètre 1 soit mysqli, null étant donné » ?

Pourquoi `mysqli_query()` renvoie-t-il une erreur « Avertissement : mysqli_query() s'attend à ce que le paramètre 1 soit mysqli, null étant donné » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-05 00:53:14258parcourir

Why does `mysqli_query()` return a

Avertissement : Comprendre l'erreur du paramètre mysqli_query()

Lors de l'utilisation de mysqli_query() en PHP, il est crucial de s'assurer que le premier paramètre est un objet mysqli valide représentant une connexion à une base de données. Cependant, si vous rencontrez une erreur indiquant "Attention : mysqli_query() s'attend à ce que le paramètre 1 soit mysqli, null donné", cela indique que le premier paramètre passé à la fonction n'est pas un objet mysqli.

Examen du code

Dans votre code fourni, vous avez une fonction appelée getPosts(). Cette fonction tente d'interroger une table de base de données nommée Blog. Cependant, dans l'appel mysqli_query() dans getPosts(), le premier paramètre n'est pas explicitement passé. Par conséquent, PHP prend la valeur de $con, qui est déclarée en dehors de la fonction, comme premier paramètre. Mais $con n'est pas dans la portée de getPosts() et renvoie donc null.

Résoudre l'erreur

Pour résoudre ce problème, vous avez deux options :

  1. **Globalisez la variable $con :** Vous pouvez rendre la variable $con globale dans getPosts() en utilisant le $con global ; déclaration. Cela indiquera à PHP de rechercher $con en dehors de la fonction, le rendant accessible dans getPosts().
  2. **Passez la variable $con en tant que paramètre :** Une meilleure approche consiste à transmettre l'objet $con en tant que paramètre de la fonction getPosts(). Cela garantit que getPosts() a un accès direct à la connexion à la base de données, éliminant ainsi le besoin d'une portée globale.

Exemple :

function getPosts(mysqli $con) {
    // ... same code as before
}

// Connect to the database
$con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx");
// Call getPosts() with the connection as a parameter
getPosts($con);

Recommandations supplémentaires

Il est également conseillé de gérer les erreurs potentielles pouvant survenir lors des opérations de base de données. Vous pouvez activer explicitement le rapport d'erreurs comme suit :

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions

Cela générera des exceptions si des erreurs se produisent, vous permettant de prendre les mesures appropriées dans votre code.

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