SQL Beginnershandleiding

  1. Inleiding
  2. De eerste tabel
  3. De database benaderen vanuit PHP
  4. PDO: De database benaderen vanuit PHP
  5. Invoegen van records
  6. PDO: Invoegen van records
  7. Selecteren van records
  8. PDO: Selecteren van records
  9. Wijzigen van records
  10. PDO: Wijzigen van records
  11. Verwijderen van records
  12. PDO: Verwijderen van records
  13. Sleutels en constraints
  14. Selecteren uit meerdere tabellen: JOINS
  15. Werken met data en tijden
  16. Aggregate functies en GROUP BY
  17. Debuggen: het oplossen van SQL fouten
  18. Slotwoord en referenties
  19. Reacties op deze tutorial

Debuggen: het oplossen van SQL fouten

Het laatste onderwerp dat ik in deze tutorial wil behandelen, is het herkennen en oplossen van fouten die in SQL queries op kunnen treden.

Doordat we een nette foutafhandeling toepassen en altijd controleren of een query wel gelukt is, kunnen we ook een nette foutmelding geven als dat niet het geval is. Met behulp van mysql_error() is de foutmelding die MySQL geeft te achterhalen. Debuggen gaat steeds makkelijker naarmate je meer ervaring krijgt, dus laten we maar eens naar een aantal voorbeelden gaan kijken.

Query syntax error
Code: query
1
2
3
SELECT
FROM
    werknemers
Output
Notice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM werknemers' at line 1

Dit is de standaard syntax waarin een foutmelding over de query syntax gegeven wordt. Eigenlijk is het enige nuttige van deze foutmelding het laatste gedeelte, vanaf 'near'. Dat is namelijk het gedeelte dat aangeeft waar de fout opgetreden is.

Als we inderdaad naar FROM in de query kijken, zien we dat we daarvoor vergeten zijn om de betreffende kolomnamen te noemen.

Unknown column in field list
Code: query
1
2
3
4
SELECT
    naam
FROM
    werknemers
Output
Notice: Unknown column 'naam' in 'field list'

Deze foutmelding geeft aan dat de kolom 'naam' die we in de SELECT noemen, niet bestaat. En ja, dat klopt ook. In onze tabel hebben we enkel de kolommen voornaam en achternaam.

No GROUP BY clause
Code: query
1
2
3
4
5
SELECT
    salaris_schaal,
    COUNT(id)
FROM
    werknemers
Output
Notice: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

Deze foutmelding wordt gegeven als we in de SELECT clausule zowel een kolomnaam opgeven als een aggregate functie gebruiken. Het is dan namelijk verplicht om een GROUP BY clausule met daarin de kolomnamen die niet in de aggregate functie voorkomen, op te nemen.

Onvolledige GROUP BY
Code: query
1
2
3
4
5
6
7
8
SELECT
    voornaam,
    salaris_schaal,
    COUNT(id)
FROM
    werknemers
GROUP BY
    salaris_schaal
Output
Notice: 'databasenaam.werknemers.voornaam' isn't in GROUP BY

Deze foutmelding krijgen we alleen als we MySQL in ANSI mode dwingen. De foutmelding geeft aan dat er een bepaalde kolom wel in de SELECT clausule voorkomt maar niet in de GROUP BY, terwijl dat wel zou moeten.

Dit waren enkele voorbeelden van SQL foutmeldingen. Zoals je ziet zijn ze redelijk duidelijk, dus het vinden van fouten in een query mag dan ook niet al teveel problemen opleveren.

Vorige Volgende