2009-07-16 11 views
0

Je travaille sur un projet où j'utilise mysql_fetch_assoc pour retourner un tableau associatif.mysql_fetch_assoc() retourne une valeur inattendue

Cependant, je suis perplexe quant à la raison pour laquelle il retournerait TRUE

J'ai regardé la page de manuel PHP, et la seule valeur booléenne il devrait être de retour est FALSE, et seulement sur un échec.

Bien que je me sers d'un ensemble personnalisé de classes d'abstraction, il est essentiellement fait ceci:

$result = mysql_query("SELECT * FROM table WHERE filename = 'test1.jpg'"); 
var_dump(mysql_fetch_assoc($result)); // bool(true) 

Est-ce que quelqu'un sait pourquoi il retournerait TRUE au lieu d'un tableau?

Mise à jour

Eh bien, après avoir essayé quelques petites choses, j'ai déterminé sa ma bibliothèque, en exécutant le code ci-dessus retourne un tableau associatif. Je ne sais pas pourquoi exactement il retournait TRUE, mais pour l'instant, je vais arrêter de rendre les choses plus compliquées qu'elles ne doivent l'être (un de mes problèmes) et utiliser mysqli (merci pour le pourboire, Michael) au lieu de mes propres classes ActiveRecord, qui apparemment ne fonctionnent pas.

Merci!

+2

Comment le look code réel comme? – Gumbo

Répondre

1

Commencez à utiliser mysqli_query mysqli_fetch_assoc,. L'ancienne version sera bientôt obsolète - la nouvelle version est meilleure de toute façon.

+3

"bientôt dépassé - le nouveau est meilleur de toute façon", le nouveau serait pdo alors parce qu'il y avait une discussion pour déplacer toutes les extensions non-pdo db du noyau vers pecl. Mais cela a été reporté de toute façon; instantanés "actuels" de php 6 contiennent à la fois php_mysql et php_mysqli – VolkerK

+0

@ VolkerK, bon point - je deviens obsolète aussi bien :) – Dirk

0

Avez-vous essayé:

print_r (mysql_fetch_assoc($result)); 

Il peut donner ce que vous recherchez.

Oh, et stupide moi, var_dump() ne renvoie rien, il sort directement ses résultats comme print_r().

+0

retourne juste '1' –

+1

Que dit mysql_num_rows()? Et que se passe-t-il si vous mettez directement la requête MySQL dans le db? – Meep3D

2

J'ai rencontré la même chose. C'était une erreur de codage stupide de ma part.

J'ai commencé avec:

$result = mysql_query($someSql); 
while($row = mysql_fetch_assoc($result)) { 
    // do stuff 
} 

qui a bien fonctionné. Puis je l'ai changé:

$result = mysql_query($someSql); 
while($row = mysql_fetch_assoc($result) && $someCondition) { 
    // do stuff 
} 

Cela est interprété comme $row = (mysql_fetch_assoc($result) && $someCondition), ce qui signifie $row devient true alors qu'il ya des lignes à gauche et la deuxième condition est true.

Ce que je voulais écrire était:

$result = mysql_query($someSql); 
while(($row = mysql_fetch_assoc($result)) && $someCondition) { 
    // do stuff 
} 
Questions connexes