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
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
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
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
2
3
4
5
6
7
8
voornaam,
salaris_schaal,
COUNT(id)
FROM
werknemers
GROUP BY
salaris_schaal
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.
Inhoudsopgave
- Inleiding
- De eerste tabel
- De database benaderen vanuit PHP
- Invoegen van records
- Selecteren van records
- Wijzigen van records
- Verwijderen van records
- Sleutels en constraints
- Selecteren uit meerdere tabellen: JOINS
- Werken met data en tijden
- Aggregate functies en GROUP BY
- Debuggen: het oplossen van SQL fouten
- Slotwoord en referenties