2009-07-16 16 views
0

Ich arbeite an einem Projekt, bei dem ich mysql_fetch_assoc verwende, um ein assoziatives Array zurückzugeben.mysql_fetch_assoc() gibt einen unerwarteten Wert zurück

Aber ich bin verwirrt, warum es TRUE

zurückkehren würde ich auf der PHP-Handbuch Seite sah, und der einzige boolean Wert ist es zurückkehren sollte FALSE, und dann auch nur auf einem fehlschlagen.

Obwohl ich eine benutzerdefinierte bin mit der Abstraktion Klassen gesetzt wird grundsätzlich dies zu tun:

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

Weiß jemand, warum wäre es TRUE anstelle eines Arrays zurückkommen?

aktualisieren

Nun, nach ein paar Dinge zu versuchen, ich habe bestimmt seine meine Bibliothek, wie die obige Code ausgeführt wird ein assoziatives Array zurückgibt. Ich weiß nicht, warum genau es zurückkam TRUE, aber für jetzt werde ich aufhören, die Dinge komplizierter als sie sein müssen (ein Problem von mir) und nur mysqli (Danke für den Tipp, Michael) statt meine eigenen ActiveRecord-Klassen, die anscheinend nicht funktionieren.

Danke!

+2

Wie funktioniert der eigentliche Code aussehen? – Gumbo

Antwort

1

Beginnen Sie mit mysqli_query mysqli_fetch_assoc,. Die alte Version wird bald veraltet sein - die neue ist sowieso besser.

+3

"bald veraltet sein - der neue ist sowieso besser", der neue wäre dann pdo, weil es eine Diskussion gab, _all_ non-pdo db extensions vom Kern auf pecl zu verschieben. Aber das wurde sowieso verschoben; "aktuelle" Snapshots von PHP 6 enthalten sowohl php_mysql als auch php_mysqli – VolkerK

+0

@ Volkerk, guter Punkt - ich werde auch veraltet :) – Dirk

0

Haben Sie versucht:

print_r (mysql_fetch_assoc($result)); 

Es kann geben, was Sie suchen.

Oh, und dumm mich, var_dump() gibt nichts zurück, es gibt seine Ergebnisse direkt wie print_r() aus.

+0

gibt nur '1' zurück –

+1

Was sagt mysql_num_rows()? Und was passiert, wenn Sie die MySQL-Abfrage direkt in die db setzen? – Meep3D

2

Ich lief in die gleiche Sache. Es war ein blöder Codierungsfehler meinerseits.

begann ich heraus mit:

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

die fein gearbeitet. Dann habe ich es zu:

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

Dies als $row = (mysql_fetch_assoc($result) && $someCondition) interpretiert wird, was bedeutet, $rowtrue wird, während es Reihen links und die zweite Bedingung ist true.

Was ich schreiben meinte, war:

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