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
Libérer: 2024-12-05 00:53:14
original
262 Les gens l'ont consulté

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);
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal