Den Wert "NULL" in der DB speichern

Daaguru

Erfahrenes Mitglied
Hi Tutorials.de Community,

ich kann den Wert 'NULL' nicht manuell in meiner DB Speichern.
Wie geht das?

PHP:
function setNull($var) {
if (empty($var)) {
   return NULL;
} else {
   return $var;
}

Den Rückgabewert möchte ich speichern, wenn $var aber leer ist, soll auch NULL in der DB gespeichert werden, wie?

Vielen Dank schonmal

~daA|guRu~
 
Kann es sein dass NULL 'NULL' sein muss, sprich ein String?

Bekommst du irgendeine Fehlermeldung?
 
Das ist ja der "Witz" an der Sache.
Wenn ich 'NULL' als String übergebe, wird es auch als String NULL gespeichert :)

Nein bekomme auch keine Fehlermeldung.
 
Also es geht eigentlich recht einfach... nur muss eben NULL dastehen

SQL:
UPDATE `table` SET `feld` = NULL WHERE `id` = 1

Da ich eine MySQL Klasse verwende, prüft sie ob NULL drinsteht und dann eben die anführungszeichen entfernt.

Nochmal PHP Beispiele...

PHP:
$var = NULL;
mysql_query("UPDATE `table` SET `feld` = $var WHERE `id` = 1"); // geht nicht.. MYSQL Error
mysql_query("UPDATE `table` SET `feld` = '$var' WHERE `id` = 1"); // geht nicht, feld ist hinterher einfach leer

$var = 'NULL';
mysql_query("UPDATE `table` SET `feld` = $var WHERE `id` = 1"); // geht 
mysql_query("UPDATE `table` SET `feld` = '$var' WHERE `id` = 1"); // geht nicht, feld ist hinterher NULL als String, oder 0 wenn ein zahlenfeld.

Nun muss man einen weg finden zu unterscheiden ob Anführungszeichen ausenrum müssen oder nicht.
 
Zuletzt bearbeitet von einem Moderator:
Wenn du 3 Felder hast und nur in 2 davon Einträge vornimmst dann hat das dritte doch automatisch Wert "NULL", es sei denn du hast ein defult Wert gesetzt.
 
Du könntest eine Hilfsfunktion nutzen, beispielweise:
PHP:
funktion mysql_value( $val )
{
	switch( gettype($val) ) {
		case 'boolean':
			return $val ? '1' : '0';
		case 'integer':
		case 'double':
			return $val;
		case 'string':
			return '"'.mysql_real_escape_string($val).'"';
		default:
			return 'NULL';
	}
}
 
Danke erstmal für die vielen Antworten.
Allerdings, funktioniert keine der Lösungen.

So habe ich mir das gedacht. Klappt so allerdings nicht.

PHP:
function setNullIfEmpty($var) {
     if (empty($var)) {
	return 'NULL';
     } else {
	return $var;
     }
}


$nullVar1 = $this->setNullIfEmpty($this->var1);
$nullVar2 = $this->setNullIfEmpty($this->var2);
			
$check_query =	$sql->query("INSERT INTO `contacts` (firstname, name )
								VALUES 	  ('".$nullVar1."', '".$nullVar2."')");
 
PHP:
function setNullIfEmpty($var) {
     if (empty($var)) {
	return 'NULL';
     } else {
	return "'$var'";
     }
}


$nullVar1 = $this->setNullIfEmpty($this->var1);
$nullVar2 = $this->setNullIfEmpty($this->var2);
			
$check_query =	$sql->query("INSERT INTO `contacts` (firstname, name )
								VALUES 	  (".$nullVar1.", ".$nullVar2.")");

Im Null-Fall versuchtest du immernoch, einen String "NULL" einzuspeisen. Habe deshalb die check-Funktion ein wenig abgeändert und den Querystring angepasst.
 

Neue Beiträge

Zurück