Gebruik van backticks in MySQL

In MySQL (en andere databaseservers zoals Oracle) is het mogelijk om backticks (`) in een query te plaatsen. Deze backticks plaats je dan om de naam van een kolom heen of om de naam van een tabel. Het gebruik ervan wordt echter sterk afgeraden!

Waarom gebruik je backticks?
Het gebruik van backticks kan in principe altijd, ook wanneer het niet nodig is. Het wordt echter sterk afgeraden omdat het meer gezien wordt als een smerige oplossing voor een verkeerd databasemodel. De reden daarvan is dat er in MySQL een aantal gereserveerde woorden zitten. Die woorden gebruikt MySQL om goed te functioneren. Hieronder een greep uit de gereserveerde woorden: (volledige lijst: klik hier)

  • DATE
  • LIMIT
  • ORDER
  • VALUES

Wanneer je één of meerdere van deze woorden gebruikt als kolom- en/of tabelnaam, dan zul je deze tussen backticks moeten plaatsen. Een voorbeeld van query met een gereserveerd woord ziet er zo uit: (we gebruiken een database met dropsoorten)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT
    naam
FROM
    `drop`

Op zich is het logisch dat het woord drop tussen backticks moet, 'drop' wordt namelijk gebruikt om een tabel of database weg te gooien (te droppen).

Verkeerd databasemodel
Wanneer je met backticks moet gaan werken, dan moet je jezelf afvragen of je je databasemodel wel goed gebouwd hebt. Er zijn genoeg oplossingen om het gebruik van backticks te vermijden. Een voorbeeld daarvan is een prefix: tbl_*

Column
Op PHPhulp is er een column geschreven over persoonlijke ervaringen met betrekking tot het gebruik van backticks. Deze kun je hier vinden.

Referenties

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Leesbaarheid
  2. SQL-injection
  3. XSS-injection
  4. Gebruik van backticks in MySQL
  5. Correcte foutenafhandeling
  6. Geheugenefficiënt programmeren
  7. Slot

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.