Unter Perl NULL-Wert hinzufügen
Sascha Nehls
- datenbank
Hallo,
ich habe eine Mitgliedsdatenbank für einen Verein geschrieben, wo man sich selber über Internet anmelden kann. Dabei werden die gemachten eingaben gequotet, um Fehler in der Datenbank zu vermeiden. Nur leider habe ich das Problem, das nach dem quoten keine NULL-Werte mehr vorhanden sind. Ich möchte aber, dass in der SQL-Datenbank NULL-Werte stehen, wenn keine Angaben zu dem entsprechenden Attribut gemacht wurden.
Beispiel:
$TrikotNr = "";
my $TrikotNr = $db->quote($TrikotNr);
my $query = $db->prepare("INSERT INTO Verein (Name,Nachname,TrikotNr) VALUES ($Name, $Nachname,$TrikotNr)")
Hier ist die TrikotNr KEIN NULL-Wert! Wie kann man das umgehen, ohne jeden einzelnen Wert vor dem quoten abzufragen, ob er leer ist? Ich hab nämlich ziemlich viele Attribute in meiner Tabelle.
Hi,
hier 2 Funktionen die die helfen sollten:
function sqlSafeString($param) {
return (NULL === $param ? "NULL" : '"'.mysql_escape_string ($param).'"');
}
function sqlSafeInt($param) {
return (NULL === $param ? "NULL" : intVal ($param));
}
Viele Grüße,
Chrisi ...
你好 Chrisi,
hier 2 Funktionen die die helfen sollten:
[...]
PHP ist nicht Perl.
再见,
CK
Hallo,
ich habe eine Mitgliedsdatenbank für einen Verein geschrieben, wo man sich selber über Internet anmelden kann. Dabei werden die gemachten eingaben gequotet, um Fehler in der Datenbank zu vermeiden.
..und passiert auch nichts, wenn ich irgendwie ' als Text eingebe?
Nur leider habe ich das Problem, das nach dem quoten keine NULL-Werte mehr vorhanden sind. Ich möchte aber, dass in der SQL-Datenbank NULL-Werte stehen, wenn keine Angaben zu dem entsprechenden Attribut gemacht wurden.
Also wenn ich das jetzt richtig verstanden habe, willst du einfach, dass nichts darin steht, weil NULL verstehe ich als nicht definiert.
$TrikotNr = "";
my $TrikotNr = $db->quote($TrikotNr);
my $query = $db->prepare("INSERT INTO Verein (Name,Nachname,TrikotNr) VALUES ($Name, $Nachname,$TrikotNr)")
Also ich würde aus Sicherheitsgründen nicht die Variablen direkt in prepare hineinschreiben, sondern mit Platzhaltern arbeiten, also:
$TrikotNr = '';
my $query = $db->prepare("INSERT INTO Verein (Name,Nachname,TrikotNr) VALUES (?,?,?)");
$query->execute($Name,$Nachname,$TrikotNr) or die $db->errstr;
Markus.