Vinzenz Mai: Problem mit Variablentyp nach MySQL

Beitrag lesen

Hallo,

Und zwar ändert die Variable $newid ihren Typ von integer zu NULL und ich verstehe weder wieso noch wie ich es verhindern kann.

$sql="SELECT MAX(id) FROM category" ;

$sql=mysql_query($sql);
$newid = 0;
echo "var: ".gettype($newid)."<br />"; //integer

while($unter=mysql_fetch_array($sql)){
   $newid = $unter[id];

Achso, ja: Deine Abfrage enthält keine Spalte mit dem Namen id, deswegen enthält die Variable $unter auch keinen Schlüssel mit dem Wert 'id' (Du hast die Anführungszeichen zusätzlich noch vergessen). Daher der NULL-Wert.

display_errors = ALL

hätte Dir weitergeholfen.

Du kannst mit einem Aliasnamen dafür sorgen, dass es im Abfrageergebnis eine Spalte mit dem Namen id gibt:

[code lang=sql]SELECT
    MAX(id) id
FROM
    category

  
a) ich halte es in den seltensten Fällen für eine gute Idee, den Namen einer  
   vorhandenen Spalte als Aliasnamen zu gebrauchen,  
b) könntest Du mit dem Einsatz von [COALESCE()](http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html#function_coalesce) den Test auf 0 vermeiden:  
  
    ~~~sql
SELECT  
        COALESCE(MAX(id), 0) newid  -- Achtung: Spalte heißt jetzt "newid"  
    FROM  
        category  
    

liefert immer eine Zahl zurück, auch wenn es noch gar keine id in der
   Tabelle ist

c) ist eine automatisch generierte id die bessere Wahl, z.B. AUTO_INCREMENT.

Freundliche Grüße

Vinzenz