DK: MySQL 4: Eintrag vom Typ INT wird als String ausgelesen

Hallo,

mein PHP-Script liest eine Nummer (id INT(11)) aus der Datenbank (MySQL 4) aus:

  
SELECT * FROM folders WHERE id = '" . intval($_GET['folder']) . "'  

Danach wird verglichen ob die Nummer größer als Null ist:

  
if($result['supfolder'] >= "0")  

Mein Problem dabei ist, dass ich die Null in Hochzeichen nehmen muss, da sie sonst nicht als String behandelt wird.

Warum wird die Null als Sting ausgelesen obwohl das Feld den Datentyp INT hat?
Kann man das ganze irgendwie umgehen? Oder ist das bei jeder MySQL Datenbank so?

  1. Mein Problem dabei ist, dass ich die Null in Hochzeichen nehmen muss, da sie sonst nicht als String behandelt wird.

    intval() kennst du doch schon?

    Warum wird die Null als Sting ausgelesen obwohl das Feld den Datentyp INT hat?

    Nachdem du verschweigst, wie du aus die Inhalte aus der Datenbank kommst, gehe ich davon aus, dass du mysql_fetch_array bzw. _assoc oder vergleichbares verwendest:

    mysql_fetch_array

    Return Values
    Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows.

    Ergo - eine Funktion dieser Art nimmt dir das manuelle typecasting nicht ab.

    Kann man das ganze irgendwie umgehen? Oder ist das bei jeder MySQL Datenbank so?

    Mit MySQL hat das in erster Linie nichts zu tun.

    1. Hi!

      Ergänzend:

      Warum wird die Null als Sting ausgelesen obwohl das Feld den Datentyp INT hat?
      Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows.

      Das "Problem" einer Lieferung als Integer wäre, dass übergroße Zahlenwerte (BIGINT) verloren gingen, da sie in einen PHP-Integer nicht reinpassen. Ebenso verschwänden führende Nullen im Falle von ZEROFILL-Feldern.

      Lo!