Modul DBI ` und ; und ' und " verwenden?
Lukas
- perl
Guten Morgen!
Ein normales MySQL Statement wird üblicherweise mit einem Semikolon beendet.
Column-Namen sowie Index-Namen und Tabellen-Namen werden mit `` eingegrenzt,
und Werte mit ''
INSERT INTO table
(column1
,column2
) VALUES ('Hello','World');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nur ... wie geht das CPAN Modul DBI damit um??
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$dbh->do()
$dbh->prepare()
Was soll ich da einfügen?
-------------------------
1) Backticks
Sind Backticks
erlaubt?
Darf / Darf nicht / Soll / Muss / man sie in Verbindung mit dem Modul DBI verwenden?
Es gibt Spaltennamen die zwingend Backticks
benötigen
wenn sich die Spaltennamen mit Keywords schlagen oder
Leerzeichen in den Spaltenbezeichnungen verwendet werden.
2) 'Single Quotes'
Obwohl DBI Placeholder kennt, fügt man sicher ab und zu
den einen oder anderen statischen Wert direkt ein.
Darf / Darf nicht / Soll / Muss / man dann 'Single Quotes' um die Werte setzen?
3) Semikolon ;
Darf / Darf nicht / Soll / Muss / am Ende des Statements
ein Semikolon hin?
4) Was soll ausser um das Statement herum hin?
$dbh->do('') und $dbh->prepare('')
oder eher
$dbh->do("") und $dbh->prepare("")
oder total was anderes?
Liebe Grüße, danke!
Lukas
Moin,
http://search.cpan.org/~timb/DBI-1.48/DBI.pm
gruss
Was soll ich da einfügen?
1)
Backticks
SindBackticks
erlaubt?
Darf / Darf nicht / Soll / Muss / man sie in Verbindung mit dem Modul DBI verwenden?
Es gibt Spaltennamen die zwingendBackticks
benötigen
wenn sich die Spaltennamen mit Keywords schlagen oder
Leerzeichen in den Spaltenbezeichnungen verwendet werden.
Ich verwende sie mittlerweile um alle Spaltennamen.
2) 'Single Quotes'
Obwohl DBI Placeholder kennt, fügt man sicher ab und zu
den einen oder anderen statischen Wert direkt ein.
Darf / Darf nicht / Soll / Muss / man dann 'Single Quotes' um die Werte setzen?
Sinnvollerweise entweder mit Platzhaltern arbeiten oder mit DBI::quote
Bei statischen Werten kannst du ohne Probleme single Quotes verwenden.
3) Semikolon ;
Darf / Darf nicht / Soll / Muss / am Ende des Statements
ein Semikolon hin?
Hab ich noch nie verwendet
4) Was soll ausser um das Statement herum hin?
$dbh->do('') und $dbh->prepare('')
oder eher
$dbh->do("") und $dbh->prepare("")
oder total was anderes?
egal, du kennst den Unterschied?
Struppi.
你好 Struppi,
1)
Backticks
SindBackticks
erlaubt?
Darf / Darf nicht / Soll / Muss / man sie in Verbindung mit dem Modul DBI verwenden?
Es gibt Spaltennamen die zwingendBackticks
benötigen
wenn sich die Spaltennamen mit Keywords schlagen oder
Leerzeichen in den Spaltenbezeichnungen verwendet werden.Ich verwende sie mittlerweile um alle Spaltennamen.
Das ist der Portablitaet deiner Software arg abtraeglich. Die Backticks als
Quoting-Operatoren sind sehr proprietaer. Es gibt auch andere DBMS als
MySQL.
2) 'Single Quotes'
Obwohl DBI Placeholder kennt, fügt man sicher ab und zu
den einen oder anderen statischen Wert direkt ein.
Darf / Darf nicht / Soll / Muss / man dann 'Single Quotes' um die Werte setzen?Sinnvollerweise entweder mit Platzhaltern arbeiten oder mit DBI::quote
Bei statischen Werten kannst du ohne Probleme single Quotes verwenden.
Man sollte _immer_ Single Quotes verwenden, Single Quotes sind der vom
SQL-Standard definierte String-Kennzeichner. Bei PostGreSQL sind
Double Quotes z. B. das, was bei MySQL Backticks sind.
再见,
克里斯蒂安
Ich verwende sie mittlerweile um alle Spaltennamen.
Das ist der Portablitaet deiner Software arg abtraeglich. Die Backticks als
Quoting-Operatoren sind sehr proprietaer. Es gibt auch andere DBMS als
MySQL.
Danke, wußte ich noch nicht.
Da ich aber sowieso noch ein eigens DB Modul als Wrapper für DBI verwende, findet das Quoting der Spaltennamen genau an einer einzigen Stelle statt und sollte von daher sehr protabel sein.
Letztlich läßt sich mySQL nicht anders verwenden, da immer wieder Spaltennamen auftauchen, die ein reserviertes Wort sind und meistens - wie bei mir - merkt man das erst nach Wochen, wenn das Feld plötzlich doch in einer Bedignung auftauchen muss.
Sinnvollerweise entweder mit Platzhaltern arbeiten oder mit DBI::quote
Bei statischen Werten kannst du ohne Probleme single Quotes verwenden.Man sollte _immer_ Single Quotes verwenden, Single Quotes sind der vom
SQL-Standard definierte String-Kennzeichner. Bei PostGreSQL sind
Double Quotes z. B. das, was bei MySQL Backticks sind.
Auch gut zu Wissen, ich habe zwar bisher noch nie double Quotes verwendet, aber so komm ich wenigstens nicht auf die blöde Idee.
Struppi.