Avatar billede stonejunkie Nybegynder
04. april 2007 - 10:37 Der er 3 kommentarer og
1 løsning

Mysql throw exception

Jeg er ved at lave en mysql database klasse med en række metoder såsom select, update, insert og delete. Jeg vil gerne kunne tage ordentlig hånd om eventuelle fejl. Derfor vil jeg gerne kontrollere mine query's for fejl så jeg kan smide en exception i tilfælde heraf.

I min select metode kontollere jeg det således:

$result = mysql_query($sql, $conn);
if(! is_resource($result){
throw new Exception();
}

Da det kun er SELECT statement der returnere en "resource" så er jeg lidt i vildrede om hvordan jeg så skal kontrollere for fejl ved UPDATE, INSERT og DELETE.

Jeg har prøvet med: if(!$result){ ... Men den melder desværre ikke fejl hvis WHERE id = 1234 er ugyldigt. Den returnere blot at mysql_affected_rows er 0.

Derfor vil jeg gerne høre jeres mening om hvordan jeg smartest og bedst opfanger fejl for update, insert og delete metoderne?

Er nedenstående løsning den bedste?
if(! $result || ! mysql_affected_rows($conn))
Avatar billede erikjacobsen Ekspert
04. april 2007 - 10:42 #1
Den er nok god - det er jo ingen fejl, hvis du ikke har en række med id = 1234.

Men du har jo "fejl" i to forskellige betydninger:
1) En syntaksfejl i SQL-sætningen, eller manglende databaseforbindelse
2) En logisk fejl - du forsøger at opdatere en række, der ikke er der.

Måske du skal håndtere dem på to måder?
Avatar billede stonejunkie Nybegynder
04. april 2007 - 10:51 #2
Tak for svaret. Du har ret det giver jo meget god mening at dele dem, da jeg på den måde kan håndtere dem forskelligt.

Mange tak for svaret. Hvis du smider et svar så skal du få pointene :)
Avatar billede erikjacobsen Ekspert
04. april 2007 - 11:03 #3
Jeg samler slet ikke på point, tak ;)
Avatar billede stonejunkie Nybegynder
12. april 2007 - 08:30 #4
Ok, takker for hjælpen endnu en gang.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester