login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > MySQL


Gegevens:
Geschreven door:
Rens
Moeilijkheidsgraad:
Gemakkelijk
Hits:
14032
Punten:
Aantal punten:
 (4.75)
Aantal stemmen:
4
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (6)
 


Tutorial:

MySQL Error Handling

1. Introductie
2. Voorbeeld fouten
3. Error Handling
4. Nawoord

1. Introductie

Steeds vaker komen er op het forum vragen die over queries gaan.
Hier heb ik een korte tutorial over geschreven, hoe je vaak een groot deel van de fouten (makkelijker) kunt oplossen.

top

2. Voorbeeld fouten
Zo'n fout is bijvoorbeeld:
Warning: mysql_fetch_row(): 4 is not a valid MySQL result resource in C:pad aarestand.php on line X
Hier kun je weinig mee.
Je weet dat er op regel X van het bestand de waarden worden opgehaald.
Nu weet je nog steeds niet wat er met je query is.

Daarvoor heeft PHP een handige functie, namelijk MySQL_Error().
Deze zal netjes de error voor je op het scherm printen, met een stukje code van je query erbij.
Stel, je hebt de volgende query, maar de tabel bestaat niet:
SELECT * FROM tabl WHERE id=1;
En vervolgens kan de query niet uitgevoerd worden, dan zal PHP op het scherm zetten:
Table 'database.tbl' doesn't exist
Stop maar met zoeken, want je weet dat de tabel niet bestaat.

Of je wilt een lid met gebruikersnaam 'Rens' ophalen, met de volgende query:
SELECT * FROM leden WHERE naam='Rens;
Zal ook niet lukken, aangezien je een ' vergeten bent achter de s.
Vervolgens krijg je weer netjes een error op het scherm geprint:
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 ''Rens' at line 1
Je krijgt nu op het einde een stukje code van je query te zien, en je weet waar je moet kijken.
Ook staat er hier het regelnummer van de query bij.
Als de query als volgt zou zijn:
SELECT *
FROM leden
WHERE naam='Rens;

Zou je een error krijgen die er zo uit ziet:
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 ''Rens' at line 3
Let op het regelnummer, dat is van 1 naar 3 gegaan.
Nou, kijk op regel 3, en daar heb je je fout gevonden.
Niks simpelers dan dat, toch?
Nou, genoeg theorie, stukje praktijk dan maar.

top

3. Error Handling
We weten inmiddels dat we de functie MySQL_Error() moeten gebruiken.
Nu is de vraag nog 'Hoe?'.
Daarop ga ik 2 antwoorden geven.
Eerst de minder goede manier.
Waarom 'minder goed' vraag je je af?
Deze manier maakt gebruik van 'die', dat er voor zorgt dat je pagina afgebroken word.
Hetzelfde effect als 'exit', dus de bezoeker krijgt een halve pagina te zien.
Niet echt netjes...

Maar toch, komt ie dan:
<?PHP
$sQuery 
"SELECT * FROM <tbl>";
$rResult MySQL_Query($sQuery) or die(MySQL_Error());
?>

Als je query niet word uitgevoerd, krijg je een foutmelding.
Verder ga ik er niks over uitleggen, het is allemaal standaard PHP en MySQL, voor de uitleg van de functie moet je op PHP.net zijn, of hier in het overzicht.

De andere manier, die het netste resultaat zal geven:
<?PHP
$sQuery 
"SELECT * FROM <tbl>";
if(!
$rResult MySQL_Query($sQuery))
{
  echo 
MySQL_Error();
} else
{
  
// de rest van je script
}
?>

Ook dit zou je allemaal wel moeten snappen, er word gekeken of de query word uitgevoerd of niet.
Zo nee, error weergeven.
Anders komt de rest van je script.

top

4. Nawoord
Nou, ik hoop dat jullie iets geleerd hebben van deze korte (tutorial).
Voor vragen kun je altijd hier bij de reacties terecht, op het forum, en je kunt natuurlijk een Privé bericht sturen of emailen.


« Vorige tutorial : Datum en tijd in MySQL [deel 2: Functies] Volgende tutorial : Meerdere MySQL servers op 1 machine »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.013s