PHP NULL - Problem

rejoice

Lt. Junior Grade
Registriert
Jan. 2008
Beiträge
291
Hallo

ich habe follgendes NULL - Problem:

wenn ich einer Variable NULL zuordne und dies dann in die MySql-Datenbank eintrage wird dort 0 eingetragen, jedoch wenn ich direkt im MySql-Statement NULL eintrage klappt es problemlos:

Dies funktioniert nicht:
PHP:
$_POST['link'] = NULL;

			mysql_query("UPDATE tblauftrag SET
			typ='".$_POST['typ']."' ,
			kundennummer='".$_POST['kundennummer']."' ,
			service='".$_POST['service']."' ,
			status='".$_POST['status']."' ,
			datum='".$_POST['datum']."' ,
			zeit='".$_POST['zeit']."' ,
			zahlart='".$_POST['zahlart']."' ,
			km='".$_POST['km']."' ,
			kmpreis='".$_POST['kmpreis']."' ,
			nettopreis='".$_POST['nettopreis']."' ,
			mwst='".$_POST['mwst']."' ,			
			bruttopreis='".$_POST['bruttopreis']."' ,
			geldeingang='".$_POST['geldeingang']."' ,
			stornodatum='".$_POST['stornodatum']."' ,
			info='".$_POST['info']."' ,
			link = '".$_POST['link']."'
			WHERE auftragsnummer = '".$auftragsnummer."'") or die('Error: '.mysql_error());

Dies funktioniert :
PHP:
			mysql_query("UPDATE tblauftrag SET
			typ='".$_POST['typ']."' ,
			kundennummer='".$_POST['kundennummer']."' ,
			service='".$_POST['service']."' ,
			status='".$_POST['status']."' ,
			datum='".$_POST['datum']."' ,
			zeit='".$_POST['zeit']."' ,
			zahlart='".$_POST['zahlart']."' ,
			km='".$_POST['km']."' ,
			kmpreis='".$_POST['kmpreis']."' ,
			nettopreis='".$_POST['nettopreis']."' ,
			mwst='".$_POST['mwst']."' ,			
			bruttopreis='".$_POST['bruttopreis']."' ,
			geldeingang='".$_POST['geldeingang']."' ,
			stornodatum='".$_POST['stornodatum']."' ,
			info='".$_POST['info']."' ,
			link = NULL
			WHERE auftragsnummer = '".$auftragsnummer."'") or die('Error: '.mysql_error());


Wie kann ich es vollbringen dass der Variable $_POST['link'] NULL zugeordnet wird


(PS dieses Beispiel ist vereinfacht, es wird nicht immer der variable $_POST['link'] NULL zugeordnet, sondern nur wenn das Formularfeld leer ist, jedoch funktioniert schon dieses Beispiel nicht)
 
setz NULL in der PHP-Variable als String und dann in MySQL ohne Hochkomma
 
hab ich probiert:

sowohl
PHP:
$_POST['link']  = 'NULL';
als auch
PHP:
$_POST['link']  = "NULL";
funktioniert nicht

in die MySQL-Datenbank wird nur 0 als Zahl eingetragen (link ist in der DB als INT(7) definiert)
 
grad mal schnell getestet, sogar mit der POST Variable, bei mir gehts:

PHP:
$_POST['a'] = "NULL";

mysql_query("UPDATE `test` SET `Test` = ".$_POST['a'].";");
Ergänzung ()

Sicher dass du die Hochkomma weggenommen hast, also

PHP:
mysql_query("UPDATE `test` SET `Test` = ".$_POST['a'].";");

und NICHT
PHP:
mysql_query("UPDATE `test` SET `Test` = '".$_POST['a']."';");
 
Zuletzt bearbeitet:
hallo, hatte die hochkommatas vergessen wegzunehmen.

nun klappt es.

aber wenn ich die überall wegnehme bekomme ich sql fehler angezeigt bei allen wo sich ein string verbirgt zb:

info funktioniert mit
PHP:
info='".$_POST['info']."' ,

aber funktioniert nicht mit

PHP:
info=".$_POST['info']." ,
 
sollst sie ja auch nicht überall wegnehmen, sondern nur an der stelle mit null
 
Hallo!
Du könntest das wie folgt machen ...

PHP:
mysql_query("
  UPDATE tblauftrag SET
  typ= " ($_POST['typ'] == null ? 'null' : "'" . $_POST['type'] . "'") ." ,
  kundennummer=" ($_POST['kundennummer'] == null ? 'null' : "'" . $_POST['kundennummer']. "'") ." ,
  service=". ($_POST['service'] == null ? 'null' : "'" . $_POST['service']  ."'") . "  ,

und ganz wichtig, nicht vergessen mysql_escape_string() bzw. mysql_real_escape_string() ...

PHP:
mysql_query("
   UPDATE tblauftrag SET
   typ= " ($_POST['typ'] == null ? 'null' : "'" . mysql_escape_string($_POST['type']) . "'") ." ,
   kundennummer=" ($_POST['kundennummer'] == null ? 'null' : "'"  . mysql_escape_string($_POST['kundennummer']). "'") ." ,
   service=". ($_POST['service'] == null ? 'null' : "'" . mysql_escape_string($_POST['service']) ."'") . "  ,

Michael
 
Zurück
Oben