Lukas: Modul DBI ` und ; und ' und " verwenden?

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

  1. Moin,

    http://search.cpan.org/~timb/DBI-1.48/DBI.pm

    gruss

    --
    no strict;
    no warnings;
    Zucker ist das, was dem Kaffee den schlechten Geschmack gibt, wenn man es nicht hineintut.
  2. 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.

    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.

    1. 你好 Struppi,

      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.

      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.

      再见,
      克里斯蒂安

      --
      Die Summe zweier gerade Primzahlen ist immer eine Quadratzahl.
      1. 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.