PDO en Exceptions
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry....
Het probleem is dat het script hierdoor gelijk doorspringt naar het eerst volgende catch blok.
Een klein stukje code
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$stmt = $db->prepare('INSERT INTO land (naam) VALUES (:land)');
foreach($this->landen as $land){
$stmt->bindParam(':land', $land, PDO::PARAM_STR);
$stmt->execute();
}
?>
$stmt = $db->prepare('INSERT INTO land (naam) VALUES (:land)');
foreach($this->landen as $land){
$stmt->bindParam(':land', $land, PDO::PARAM_STR);
$stmt->execute();
}
?>
Hoe kan je dit soort dingen het beste oplossen? Om om elke query een apart try met bijbehorende catch te zetten lijkt me ook niet de beste oplossing?
Gewijzigd op 01/01/1970 01:00:00 door Jan geen
Je wilt je exceptions pas afhandelen wanneer je een alternatief aan kan bieden.
Dus stel ik heb zoiets:
Main
Controller
Model - geeft PDO Exception.
Dan wil je op je Controller laag pas je try en catch hebben zodat je een ander model kan laden ipv die een fout geeft.
Het zou eventueel ook nog op de Main laag kunnen.
Hopelijk snap het een beetje
Een andere oplossing zou kunnen zijn om eerst met een SELECT te kijken of een record al bestaat, maar dat lijkt me ook niet een optimale oplossing
Je zou zoiets kunnen doen:
Code (php)
Dan wordt alles geinsert, en alles wat niet gelukt is staat in de array $exists.