2012-10-23 4 views
1

Je sais que cela peut sembler une simple question, mais sa réponse me trompe depuis un certain temps. J'essaye de renvoyer le nombre de rangées des bases de données en utilisant la clause WHERE. Ma requête est la suivante:SQL renvoyant un nombre incorrect de lignes

$query = "SELECT COUNT(*) 
      FROM nfl_current_season_games 
      WHERE home_team = 'Indianapolis Colts' 
      AND away_team = 'Chicago Bears' 
      AND week = '1'"; 

Je suis sûr à 100% qu'il existe une telle ligne. Je regarde ça dans phpmyadmin. Peu importe si j'exécute la requête avec SQL pur dans phpmyadmin ou dans un navigateur via un script php, il retourne toujours une valeur de 0. J'ai essayé d'utiliser la fonction var_dump pour les variables $ away_team et $ home_team avec PHP et ils sont tous les deux ça va. Je ne sais pas où aller d'ici parce que cela semble si étrange.

Est-ce que quelqu'un a des conseils ou des indices?

Merci,

Lance

+3

Peut-être des espaces (invisibles) pour les données dans votre base de données? – Sirko

+0

J'ai aussi pensé ça. Un moyen de le savoir? – Lance

+2

pouvez-vous donner la structure de la table et des enregistrements de l'échantillon? –

Répondre

3

vous avez probablement stapces blanc ou un problème de classement dans l'une de la colonne.

Je vous suggère d'exécuter la requête avec une condition à la fois et d'essayer de trouver celle qui cause le problème.

Lorsque vous trouvez, collez-le ici pour voir si nous pouvons aider

EDIT:

essayer de faire quelque chose comme (pas sûr de la syntaxe de MySQL, mais l'idée est de couper à supprimer les espaces Blanck et l'envoyer à haut):

UPPERCASE(TRIM(away_team)) = 'CHICAGO BEARS' 
+1

Je suis d'accord. Essayez 'WHERE week = '1'' et vérifiez si vous obtenez les bons résultats. Ensuite, essayez 'WHERE away_team = 'Chicago Bears' ET semaine = '1'', etc, etc. – MatBailie

+0

N'est-il pas vrai que les espaces de fin ne sont pas pris en compte dans les comparaisons de chaînes MySQL? – dan1111

+0

@ dan1111 cela dépend du type de données que vous utilisez ... – Jasper

0

Le type de données de la colonne 'week' est-il une chaîne/caractère? si ce n'est pas alors donnez simplement la valeur 1 sans citation, sinon (en donnant des guillemets) l'aurait interprété comme une chaîne/caractère. Essayez cette requête:

$ query = « SELECT COUNT (*)

DE nfl_current_season_games

OÙ HOME_TEAM = 'Indianapolis Colts

ET AWAY_TEAM = 'Chicago Bears'

ET semaine = 1 ";

Questions connexes