Moin!
- Der Tabellenname (oder oft auch für Feldnamen):
Manchmal reicht einfach nur Tabelle zu schreiben und manchmal muss ichTabelle
schreiben.
Gibt es dafür 'ne Regel oder ist es ohne ` grundsätzlich heikel ?
Die Backticks sind Escapezeichen, in die zwingend DB-, Tabellen- und Spaltennamen eingeschlossen werden müssen, die mit reservierten Worten der Datenbank identisch sind. Eine Spalte ALTER kollidiert beispielsweise mit dem Befehl ALTER und muß daher in Backticks.
Namen, die nicht kollidieren, dürfen auch in Backticks.
- Ich verwende ja folgende Begrenzer: " und '
Aber nicht für die Datenbank.
In deiner Codezeile ist " der Stringbegrenzer von Perl. ' ist ein im String enthaltenes simples Zeichen. Dessen Bedeutung wird erst in der Datenbank wirksam.
Wenn jetzt in der Variable $Text aber ein ' enthalten ist, gibt es ERROR.
Da reicht auch kein maskieren mit ' innerhalb der Variable.
Richtig. Alle benutzerdefinierten Werte muß man durch eine Escapingfunktion leiten, in der alle Zeichen, die unerwünschte Sonderbedeutung haben, entschärft werden. Siehe mysql_real_escape_string - auch Perl muß da eigentlich ein Interface zu dieser MySQL-Client-Funktion haben.
Kann ich die Begrenzer innerhalb der MySQL-Anweisung wilkürlich ändern ?
Bsp.: statt " nehm ich | und statt ' nehm ich ~
Nein, das ist ausgeschlossen. Escape deine Strings, und alles wird gut.
- Sven Rautenberg
"Love your nation - respect the others."