Tom: SQL, verbotene Zeichen im Feldnamen

Hello,

welche Zeichen, die man über einen normalen Editor eingeben kann, sind in einem SQL-Feldnamen garantiert verboten?

Hintergrund ist, dass ich meinem MySQL-Baukasten beibringen möchte, dass er beim Listen von Tabellen

Liste alle Felder ohne FeldX ohne FeldY

make_list_page($con,$table,'*,!LANGTEXT,!BLAHFELD')

und noch ein paar andere Funktionen, wie z.B. die zu verwendende Spaltenbreite für die Anzeige, oder dass das Feld als Link dargestellt werden soll usw.

Gibt es da eventuell schon eine etablierte Zeichenverwendung?

Habt Ihr eine andere Idee, wie man das handhaben könnte, damit man zum Coden nachher nicht ständig das Handbuch mit der Zeichenerklärung benötigt, so wie bei Linux-Dienstprogrammen ;-))

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau

  1. echo $begrüßung;

    welche Zeichen, die man über einen normalen Editor eingeben kann, sind in einem SQL-Feldnamen garantiert verboten?

    Dass man diese Frage für allgemeines SQL beantworten kann, glaube ich nicht. Für MySQL steht es im Handbuch-Kapitel Database, Table, Index, Column, and Alias Names.

    echo "$verabschiedung $name";

    1. Hello,

      echo $begrüßung;

      welche Zeichen, die man über einen normalen Editor eingeben kann, sind in einem SQL-Feldnamen garantiert verboten?

      Dass man diese Frage für allgemeines SQL beantworten kann, glaube ich nicht. Für MySQL steht es im Handbuch-Kapitel Database, Table, Index, Column, and Alias Names.

      Das ist nicht so ergiebig, wie ich im ersten Moment annahm.
      Vielleicht sollte ich dann doch besser ein optionales Optionen-Array im Funktionskopf einführen.

      Ich möchte nur, dass meine alten Applikationen auch noch mit der neuen Funktion weiterlaufen.

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

      1. Moin!

        welche Zeichen, die man über einen normalen Editor eingeben kann, sind in einem SQL-Feldnamen garantiert verboten?

        Dass man diese Frage für allgemeines SQL beantworten kann, glaube ich nicht. Für MySQL steht es im Handbuch-Kapitel Database, Table, Index, Column, and Alias Names.

        Das ist nicht so ergiebig, wie ich im ersten Moment annahm.

        Das Problem ist, dass sich die Aussage "Datenbanknamen dürfen keine Zeichen enthalten, die nicht in Verzeichnisnamen vorkommen dürfen" und "Tabellennamen dürfen keine Zeichen enthalten, die nicht in Dateinamen vorkommen dürfen" höchst unterschiedlich gestaltet, in Abhängigkeit vom verwendeten Betriebssystem, auf dem MySQL läuft.

        Deshalb ganz simpel der Vorschlag, sich streng auf den Zeichenraum A-Za-z0-9_ zu beschränken. Das erschlägt alle kruden Dateisysteme, auf die MySQL zugreifen könnte.

        - Sven Rautenberg

        --
        My sssignature, my preciousssss!
        1. Hello,

          Deshalb ganz simpel der Vorschlag, sich streng auf den Zeichenraum A-Za-z0-9_ zu beschränken. Das erschlägt alle kruden Dateisysteme, auf die MySQL zugreifen könnte.

          Ich suche doch gerade _die_ _Zeichen_ die garantiert nicht enthalten sein dürfen im Spaltennamen, um sie für Sonderfunktionen zu benutzen. Meine API filtert die dann ja wieder aus. SQL sieht davon nichts. Wenn aber z.B. ein Ausrufezeichen im Spaltennamen einer gängigen SQL-Datenbank enthalten sein dürfte (bei mir i.d.R. nur am Anfang des Namens), könnte ich es nicht mehr für Sonderfunktionen verwenden, da die Schnittstelle dann ja nicht mehr unterscheiden könnte, ob es zum Namen gehört, oder nicht.

          Ausnahme: Sie kennt die Spaltennamen...

          Aber ich wollte es erstmal einfach halten. :-)

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau

          1. Deshalb ganz simpel der Vorschlag, sich streng auf den Zeichenraum A-Za-z0-9_ zu beschränken. Das erschlägt alle kruden Dateisysteme, auf die MySQL zugreifen könnte.

            Ich suche doch gerade _die_ _Zeichen_ die garantiert nicht enthalten sein dürfen im Spaltennamen,

            ich glaube das hat Sven in dem Posting versucht zu erklären, das es die nicht gibt.

            Struppi.

            1. Moin!

              Ich suche doch gerade _die_ _Zeichen_ die garantiert nicht enthalten sein dürfen im Spaltennamen,

              ich glaube das hat Sven in dem Posting versucht zu erklären, das es die nicht gibt.

              Das hatte ich nicht, weil Tom in seiner Frage woanders hinwollte, als es sich jetzt herausstellt.

              Die in einem Tabellen-, Datenbank- oder Spaltennamen zwingend unerlaubten Zeichen sind für MySQL ja in der verlinkten Seite enumerativ genannt: ASCII 0, Byte 255, Slash, Backslash und Punkt. Sowie weitere Zeichen in Abhängigkeit vom Dateisystem.

              Ich halte allerdings den Versuch, in einem API-Layer Datenbankabfragen in SQL-Strings mit Sonderfunktionen durch unerlaubte Zeichen zu überladen, für unpassend. Um ein korrektes Parsing des Strings kommt man dann sowieso wieder nicht umhin, also kann man sich auch direkt ein passendes Escaping integrieren. Denn Punkte, Slashes und Backslashes kommen typischerweise zumindest in VARCHAR- und TEXT-Feldern vor und würden stören. Abgesehen von der Tatsache, dass das Quoting ja auch Beachtung finden muß - insbesondere in Abhängigkeit des Schalters ANSI-SQL.

              - Sven Rautenberg

              --
              My sssignature, my preciousssss!
  2. Hi Tom,

    am sichersten fährst Du mit

    $_A-Za-z0-9

    Umlaute sind in der Regel verboten. Für andere Zeichen mußt Du im Handbuch nachgucken.

    Gruß

    Hans

    1. Hello,

      Hi Tom,

      am sichersten fährst Du mit

      $_A-Za-z0-9

      Umlaute sind in der Regel verboten. Für andere Zeichen mußt Du im Handbuch nachgucken.

      Die Frage war genau andersherum.
      Welche Zeichen sind garantiert verboten und können über einen normalen Editor eigegeben werden?

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau