Maison >base de données >tutoriel mysql >Pourquoi ma requête MySQL ne renvoie-t-elle qu'une seule ligne en PHP et comment puis-je y remédier ?

Pourquoi ma requête MySQL ne renvoie-t-elle qu'une seule ligne en PHP et comment puis-je y remédier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-02 15:21:11785parcourir

Why Does My MySQL Query Only Return One Row in PHP, and How Can I Fix It?

Identification du problème de MySQL produisant un résultat sur une seule ligne

Lors de l'exécution de requêtes SQL à l'aide de PHP, vous pouvez parfois rencontrer un scénario dans lequel MySQL ne renvoie qu'une seule ligne, même si la base de données contient plusieurs enregistrements correspondants. Cela peut conduire à des résultats inattendus et le dépannage peut être difficile.

Dans l'exemple fourni, un script PHP interroge une table nommée fastsearch pour les lignes où la colonne des balises correspond à une valeur spécifique. Cependant, le code utilise la fonction mysql_fetch_assoc(), qui récupère uniquement la première ligne du jeu de résultats, conduisant à l'affichage d'un seul enregistrement.

Résoudre le problème de récupération sur une seule ligne

Pour corriger ce problème et récupérer toutes les lignes correspondantes de la base de données, nous pouvons modifier le code PHP comme suit :

$query = mysql_query("SELECT `title`,
                             `url_title`
                        FROM `fastsearch`
                       WHERE `tags`
                            LIKE '%$q%'
                       LIMIT 5");

while ($row = mysql_fetch_assoc($query)) {
    print_r($row);
}

Ici, nous utilisons une boucle while pour parcourir l'ensemble de résultats. La fonction mysql_fetch_assoc() est appelée dans la boucle et renvoie la ligne suivante à chaque exécution. La boucle continue jusqu'à ce qu'il n'y ait plus de lignes à récupérer, affichant tous les enregistrements correspondants.

La solution résout deux problèmes courants :

  1. Frappe de frappe dans la variable de requête : Le code original comportait une faute de frappe : $quer au lieu de $query. Cela a été corrigé.
  2. **Utilisation appropriée de mysql_fetch_assoc() : Après avoir résolu la faute de frappe, la fonction mysql_fetch_assoc() est utilisée correctement dans la boucle. Il est appelé à plusieurs reprises pour parcourir chaque ligne, garantissant que tous les enregistrements correspondants sont imprimés.

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