Daniel: mysql_fetch_assoc() & mysql_fetch_array()

Hallo!

Kann es sein, dass die PHP Funktionen mysql_fetch_assoc() & mysql_fetch_array() nur dann korrekt funktionieren, wenn mind 2 Spalten aus einer Datenbank abgefragt werden?

Wenn ich zb nur eine Selektiere:

SELECT ID FROM test_table WHERE key = 5;
...usw...
Dann bekomme ich mit obigen 2 Funktionen immer ein leeres Result, also

$result = mysql_fetch_assoc($mysql_query($sql_string,$conn));
bzw.
$result = mysql_fetch_array($mysql_query($sql_string,$conn));

ist leer(nicht das Mysql Resultset, aber die Variable result).
Solche Abfragen funktionieren bei mir nur mit mysql_fetch_row() korrekt.
Ist das eine Eigenheit dieser Funktionen, oder ein Bug ?

Grüsse,
Daniel

  1. Hallo,

    SELECT ID FROM test_table WHERE key = 5;
    $result = mysql_fetch_assoc($mysql_query($sql_string,$conn));
    ist leer(nicht das Mysql Resultset, aber die Variable result).

    Du solltest also ein Resultset mit genau einem Feld kriegen
    (wenn der key unique, d.h. eindeutig, ist.)

    Trotzdem sollte es nach meinem Verstaendnis
    immer noch ein Array sein.
    Ich kann es mir nicht recht erklaeren.

    Dir ist hoffentlich bewusst, dass die
    Zaehler immer bei Null anfangen.

    Das erste Feld eines zweidimensionalen
    Arrays mit numerischen Schluesseln
    waere also
    $feld[0][0]

    Vielleicht ist das ja Dein Problem/Denkfehler?

    (Jaja, ich weiss, dass PHP den Unterschied
    bei den Schluesseln gar nicht macht.)

    HTH, Gruesse,

    Thomas

    --
    Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
    Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
  2. Hi,

    [...] 2 Spalten aus einer Datenbank abgefragt werden?

    Nee, das hat IMHO damit nix zu tun.

    SELECT ID FROM test_table WHERE key = 5;

    Hast Du in dem Fall schon mal die Variable $sql_string per echo() ausgegeben und z.B. in PHPMyAdmin getestet?

    $result = mysql_fetch_assoc($mysql_query($sql_string,$conn));
    bzw.
    $result = mysql_fetch_array($mysql_query($sql_string,$conn));

    ^--- Bist Du Dir sicher dass das so funktionieren kann? Das sollte einen Fehler erzeugen: für eine Funktion (PHP oder eigene) ist das $-Zeichen überflüssig, Variablen haben keine Klammern für Parameter (ok, ausser Arrays, aber das da oben ist kein Array).

    Bei mysql_fetch_array() musst Du im übrigen noch den Parameter MYSQL_ASSOC angeben damit ein asoziatives Array zurückgegeben wird!

    Solche Abfragen funktionieren bei mir nur mit mysql_fetch_row() korrekt.

    Teste es noch einmal explizit mit dem oberen Beispiel, es kann auch in dem Fall nicht funktionieren (IMHO wegen $mysql_query)

    Ist das eine Eigenheit dieser Funktionen, oder ein Bug ?

    Programmierfehler, schätz ich mal :-)

    Gruss AndreD