MySQL Spalten und Tabellen mit Sonderzeichen und Umlaute

20. März 2012  |  Kommentar schreiben   |  Tags: ,



Bei Facebook teilen

Auch wenn Sie ein MySQL Profi sind, werden Sie zu einer bestimmten Zeit MySQL Spalten- und Tabellennamen mit Sonderzeichen anlegen wollen oder müssen. Das gilt auch für den Fall, wenn Ihre MySQL Tabelle oder Spalte ein durch MySQL reserviertes Wort enthält oder wenn Sie Ihre User direkt die Tabellenerstellung über eine Schnittstelle überlassen. Wichtig zu wissen ist, dass dies am besten umzugehen jedoch nicht unmöglich ist – Sie können ohne Probleme Sonderzeichen und Umlaute in Ihren MySQL Tabellennamen und Spaltennamen anwenden, wenn Sie sich einfach an die Spielregeln halten was die korrekte Schreibweise Ihrer MySQL Abfragen angeht.

Problematik mit Sonderzeichen und Umlauten in MySQL Tabellen und Spalten

Angenommen, Sie hätten die MySQL Tabelle Haus-Benutzer. Folgende Abfrage:

SELECT * FROM Haus-Benutzer

würde direkt scheitern, da der Bindestrich innerhalb der Abfrage anders interpretiert wird. Auch eine solche Abfrage:

SELECT * FROM Gewünschte Farbe

oder

 SELECT * FROM Release 

ist ungültig. Das Leerzeichen bringt die Abfrage durch einander, an dieser Stelle wird als Tabellenname ‘Gewünschte’ betrachtet. ‘Release’ ist ein durch MySQL reserviertes Wort.

Lösung – korrekte MySQL Schreibweise für Sonderzeichen, Bindestriche und Umlaute

Die allgemeine Lösung ist die Nutzung von einem Sonderapostrophen – `. Die Umfassung von Spalten und Tabellen, egal wo diese in der Abfrage vorkommen, ist eine Voraussetzung für problemlose Abfragenergebnisse und sagt dem MySQL Engine, dass an dieser Stelle genau eine Tabelle oder Spalte gemeint ist. Eine korrekte Abfrage kann so aussehen:

SELECT * FROM `Gewünschte Farbe` WHERE `Release`='ja' AND `Präzision`>1 ORDER BY `Präzision`

Bitte, betrachten Sie die Nutzung von ` auch in dem Order Klausel, wo auch Spaltennamen angesprochen werden können, die ggf. genauso auskommentiert werden sollen. Wir empfehlen dringend bei Ihrer PHP Programmierung dieses Zeichen bei der dynamischen Generierung Ihrer MySQL Abfrage zu intergrieren. Dies ist auch use-media Programmierstandard.

Noch Fragen? Wir stehen gerne zur Verfügung.

Teilen

Hinterlasse eine Antwort

Du musst angemeldet sein, um einen Kommentar abzugeben.