2011-08-06 2 views
1

Voici mes deux lignes incriminées d'une fonction réutilisée:comportement Odd mysql_fetch_array

//snip 
$req = mysql_query($sql,$db) or die(db_query_error($sql,mysql_error())); 
//Breakpoint A 
$data = mysql_fetch_array($req); 
//Breakpoint B 
//snip 

A Breakpoint A:

  • $ req est une ressource valide
  • $ db est une ressource valide
  • $ sql est valide et lorsqu'il est lancé contre la base de données retourne la valeur attendue, une simple chaîne
  • Aucune erreur ne Thr propre

A Breakpoint B:

  • $ data doit être un tableau avec un indice 0 étant une chaîne avec une associative nommée "get" qui a la même chaîne

Le problème est que sur cette page, toutes les requêtes fonctionnent sauf une. Pour la requête qui ne fonctionne pas, lorsque le SQL est exécuté manuellement, cela fonctionne et renvoie la valeur appropriée. J'ai des requêtes en cours d'exécution avant et après cet appel qui fonctionnent correctement.

  • Si je ne compte (données $), je reçois 1.
  • Si j'echo "-" $ data.. "-", je reçois "-".
  • Si je fais l'écho des données $ [0], vide
  • Si je fais l'écho des données $ [1], en blanc (ce ne devrait pas créer une erreur?)

Edit # 1 - print_r, dans notre fonction de débogage personnalisée, était utilisé. - var_dump de $ data montre que c'est "bool (false)". Quelque chose ne va pas avec les variables $ db ou $ sql.

Éditer # 2 Ce problème n'a rien à voir avec MySQL. Cela avait quelque chose à voir avec notre processus de publication et où les données étaient localisées pendant ce processus.

+0

'var_dump ($ data)' –

+0

Pourquoi ne pas vous mettre la requête dans question..in votre question? –

+0

@Shredder: la requête n'est pas le problème car elle se résout bien lors de l'exécution sur la base de données. C'est le fait que $ data est vide alors qu'il ne devrait pas l'être. – TekiusFanatikus

Répondre

2

vous pouvez essayer

var_dump($data); 

aussi changer

mysql_fetch_array(); 

à

mysql_fetch_assoc(); 

ou

mysql_fetch_row(); 

si vous utilisez des index numériques.

Je pense que ces tests vous donnera votre réponse

+0

Je suis assez sûr que j'ai essayé le var_dump et c'était juste, vide. Eh bien, je suppose que notre fonction de débogage personnalisée() l'utilise. En outre, je ne suis pas sûr si je peux changer en _fetch_assoc ou _fetch_row. La base de code existante utilise cette fonction partout et je ne suis pas sûr de l'impact de l'utilisation d'un index ou d'une association. – TekiusFanatikus

+0

J'ai vérifié deux fois et notre fonction de débogage personnalisée utilise réellement print_r. Je vais essayer var_dump pour voir si je reçois quelque chose de différent. – TekiusFanatikus

Questions connexes