MySQL NULL-Werte schreiben
MySQL NULL-Werte schreiben
am 01.02.2007 20:59:10 von Dominik Schindler
Hallo,
ich habe folgendes Problem:
mysql_query ("INSERT ... VALUES ( id, ... , optional, ... ) VALUES (
NULL, ..., '$optional', ...);");
Ist es im Beispiel oben möglich, ins Feld "optional" (VARCHAR) ein NULL
zu schreiben? Wenn nämlich "$optional" den Wert NULL hat bzw. nicht
definiert ist, wird einfach ein leerer String geschrieben.
Gruß,
-w
Re: MySQL NULL-Werte schreiben
am 02.02.2007 15:36:31 von Helmut Chang
Dominik Schindler schrieb:
> mysql_query ("INSERT ... VALUES ( id, ... , optional, ... ) VALUES (
> NULL, ..., '$optional', ...);");
>
> Ist es im Beispiel oben möglich, ins Feld "optional" (VARCHAR) ein NULL
> zu schreiben?
Nein. So nicht.
> Wenn nämlich "$optional" den Wert NULL hat bzw. nicht
> definiert ist, wird einfach ein leerer String geschrieben.
Ja klar. Weil diese "Werte" dann in einem String zu einem Leerstring
evaluieren.
Du müsstest anhand des Werts von $optional unterschiedliche Queries
absetzen:
if (!isset($optional) || is_null($optional)) {
...INSERT (.., optional) VALUES (.., NULL)
} else {
// Dein originaler Query
}
gruss, heli
Re: MySQL NULL-Werte schreiben
am 02.02.2007 18:05:10 von Dominik Schindler
Helmut Chang schrieb:
>> Wenn nämlich "$optional" den Wert NULL hat bzw. nicht
>> definiert ist, wird einfach ein leerer String geschrieben.
>
> Ja klar. Weil diese "Werte" dann in einem String zu einem Leerstring
> evaluieren.
>
> Du müsstest anhand des Werts von $optional unterschiedliche Queries
> absetzen:
>
> if (!isset($optional) || is_null($optional)) {
> ...INSERT (.., optional) VALUES (.., NULL)
> } else {
> // Dein originaler Query
> }
Schade. Diese Lösung wollte ich eigentlich umgehen. Ich dachte, evtl.
gibt da eine einfachere Lösung, aber mir bleibt anscheinend doch nix
anderes übrig als 2 unterschiedliche Queries abzusetzen.
> gruss, heli
Trotzdem Danke.
-w
Re: MySQL NULL-Werte schreiben
am 02.02.2007 18:24:38 von Heiko Richler
Dominik Schindler wrote:
> Schade. Diese Lösung wollte ich eigentlich umgehen. Ich dachte, evtl.
> gibt da eine einfachere Lösung, aber mir bleibt anscheinend doch nix
> anderes übrig als 2 unterschiedliche Queries abzusetzen.
Hast Du Prepared Statements versucht? (vgl. odbc_prepare:
http://de2.php.net/manual/en/function.odbc-prepare.php)
Oder Du benutzt eine Funktion:
function string2sql($value = null) {
if (!is_null($value ))
return 'null';
return "'". sqlencode($value). "'"
}
$sql = "INSERT ... VALUES ( id, ... , optional, ... ) VALUES ".
"(NULL, ..., '" string2sql($optional).
"',...);");
Für sqlencode wäre noch die richtige Funktion einzutragen.
Heiko
--
http://portal.richler.de/ Namensportal zu Richler
http://www.richler.de/ Heiko Richler: Computer - Know How!
http://www.richler.info/ private Homepage
Re: MySQL NULL-Werte schreiben
am 02.02.2007 21:30:46 von Dominik Schindler
Heiko Richler schrieb:
> Dominik Schindler wrote:
>> Schade. Diese Lösung wollte ich eigentlich umgehen. Ich dachte, evtl.
>> gibt da eine einfachere Lösung, aber mir bleibt anscheinend doch nix
>> anderes übrig als 2 unterschiedliche Queries abzusetzen.
>
> Hast Du Prepared Statements versucht? (vgl. odbc_prepare:
> http://de2.php.net/manual/en/function.odbc-prepare.php)
>
Nein habe ich noch nicht. Habe es aber jetzt so gelöst, wie ich anfangs
dachte, also mit 2 Queries (siehe auch vorherigen Post).
Trotzdem Danke.
-w