Vinzenz Mai: Problem mit NULL

Beitrag lesen

Hallo,

NULL würde heißen: Der Wert ist gesetzt. Aber: Dein Wert ist eben nicht gesetzt, isset() ist Dein Freund ;)

nein, der Code von L(in)uchs ist völlig in Ordnung (außer nicht besonders lesbar) und das vom OP beschriebene Verhalten läßt sich nicht nachvollziehen.
Bedenke, dass der OP die Funktion is_null() verwendet, deren Einsatz hier völlig angemessen ist. Er weiß ja, dass es diese Spalte und damit diesen Arrayeintrag gibt.

Beispielcode für einen XAMPP (out-of-the-box, ungesichert):

# Ich gehe Kontextproblemen aus dem Weg  
header("Content-type: text/plain");  
	  
# Verbindungsaufbau zu einem ungesicherten XAMPP :-)  
$conn = mysql_connect('localhost', 'root', '');  
# Die Fehlerbehandlung lasse ich der Einfachheit halber weg ...  
  
# Mir reicht ein Datensatz mit einer Spalte, die einen NULL-Wert enthält  
$query = 'SELECT NULL AS spalte1, 3 AS spalte2';  
$result = mysql_query($query);  
	  
if ($row = mysql_fetch_array($result)) {  
    # Erste Debugausgabe  
    var_dump($row);  
    print "\n\n";  
  
    # Schauen wir, was aus L(in)uchs' Code resultiert  
    if ([link:http://de.php.net/manual/de/function.is-null.php@title=is_null]($row['spalte1'])) {  
        print "Spalte1 IS NULL\n";  
    }  
    else {  
        print "is_null konnte nicht feststellen, dass da ein NULL-Wert steht.\n";  
    }  
}  

#------------------------------------------------
Ausgabe

array(4) {
  [0]=>
  NULL
  ["spalte1"]=>
  NULL
  [1]=>
  string(1) "3"
  ["spalte2"]=>
  string(1) "3"
}

Spalte1 IS NULL
#------------------------------------------------

Und somit das gewünschte Ergebnis.
Ja, ich habe es auch mit der unübersichtlichen "Kurzschreibweise" mit gleichem Ergebnis getestet:

if (is_null($row['spalte1'])) echo "Spalte1 IS NULL\n"; else echo "is_null konnte nicht feststellen, dass da ein NULL-Wert steht.\n";  

Freundliche Grüße

Vinzenz