Geen fout met PDO

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Han eev

Han eev

04/04/2008 19:08:00
Quote Anchor link
Edit: Topic kan beter zijn, PDO geen error ^^

Heey,

Ik gebruik nu sinds een korte tijd PDO.
Dat werkt opzich erg goed, en veilig.
Maar als ik een fout maak in de query. Geeft PDO geen foutmelding.
errorInfo heeft dan alleen maar 00000 als data.

Bijv.

SELECT * FROM x_page.

Als x_page dan niet bestaat, geeft hij error 00000. Terwijl mysql zelf toch duidelijk een error zou geven.

Wat doe ik fout?

Ik gebruik gewoon de standaard pdo dingen.
Dus prepare en dan bindParam enz... en dan execute.

Kortom, hij geeft geen fout bij een domme query fout.
Hoe is dit op te lossen? Is dit een bekend probleem?

gr Han
Gewijzigd op 01/01/1970 01:00:00 door Han eev
 
PHP hulp

PHP hulp

18/12/2024 08:59:15
 
Tom K

Tom K

04/04/2008 19:21:00
Quote Anchor link
pdo gebruikt exception dus dit pas je zo toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
try
{
   $pdo = new PDO("Instellingen");
   //Queries enzo
}
catch(Exception $e)
{

   echo 'Er is een fout opgetreden: '.$e->getMessage;
}

?>
 
Jurgen assaasas

Jurgen assaasas

04/04/2008 19:23:00
Quote Anchor link
Tom Keim schreef op 04.04.2008 19:21:
pdo gebruikt exception dus dit pas je zo toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
try
{
   $pdo = new PDO("Instellingen");
   //Queries enzo
}
catch(Exception $e)
{

   echo 'Er is een fout opgetreden: '.$e->getMessage;
}

?>


Nee die moet je niet hebben, je moet PDOException $e.... hebben. Het is nl. geen systeemfout. de PDOException class zorgt voor de errors bij PDO.
 
Bo az

Bo az

04/04/2008 19:42:00
Quote Anchor link
Ja moet wel aangeven dat je een exception wil krijgen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


Ook met je oppassen met $e->getMessage() deze bevat namelijk o.a. je gebruikersnaam en dus kan je deze absoluut niet in een productie omgeving gebruiken!

Edit:

Met $e->getCode() kan je dan de error code opvragen, maar let op dat deze verschillen van de ingebouwde mysql_* foutmeldingen.
Gewijzigd op 01/01/1970 01:00:00 door Bo az
 
Jelmer -

Jelmer -

04/04/2008 19:43:00
Quote Anchor link
Maar aangezien PDOException Exception extend, werkt het wel :)

Waarschijnlijk moet je via PDO::setAttribute PDO::ATTR_ERRMODE even op PDO::ERRMODE_EXCEPTION zetten.
 
Han eev

Han eev

04/04/2008 19:59:00
Quote Anchor link
Heel erg bedankt!
Dat was het idd, weer wat bijgeleerd.
Nu krijg ik wel fatsoenlijke fouten! Bedankt!
 
Tom K

Tom K

04/04/2008 20:11:00
Quote Anchor link
ow, raak altijd in de war met die dingen. Maar PDO is echt cool, alleen jammer dat m'n host het niet ondersteund
 



Overzicht Reageren

 
 

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.