PDO et erreur
Le
unbewusst.sein
je simule volontairement une erreur en appellant une base de donnée qui
n'existe pas en tant que fichier.
un fichier de base de donnée vide est créé, normal.
Mais ensuite j'envoie une requête sur cette base vide :
$res=$db->query('SELECT ROWID, * FROM categories');
try{
while($row=$res->fetch()){
print_r($row);
echo "<br />";
}
}catch (PDOException $e){
echo 'Connection failed: ' . $e->getMessage();
}
Et, bien sûr, j'ai une erreur :
Fatal error: Call to a member function fetch() on a non-object in
/Users/yt/Sites/landp/landp-pdo-test.php on line 6
malgré le try / catch qui entoure la ligne fautive :
while($row=$res->fetch()){
D'où, ma question, comment gérer l'erreur dans ce cas ?
--
« Dites nous ce dont vous avez besoin ,
on vous expliquera comment vous en passer ! »
(Coluche)
n'existe pas en tant que fichier.
un fichier de base de donnée vide est créé, normal.
Mais ensuite j'envoie une requête sur cette base vide :
$res=$db->query('SELECT ROWID, * FROM categories');
try{
while($row=$res->fetch()){
print_r($row);
echo "<br />";
}
}catch (PDOException $e){
echo 'Connection failed: ' . $e->getMessage();
}
Et, bien sûr, j'ai une erreur :
Fatal error: Call to a member function fetch() on a non-object in
/Users/yt/Sites/landp/landp-pdo-test.php on line 6
malgré le try / catch qui entoure la ligne fautive :
while($row=$res->fetch()){
D'où, ma question, comment gérer l'erreur dans ce cas ?
--
« Dites nous ce dont vous avez besoin ,
on vous expliquera comment vous en passer ! »
(Coluche)

Poser une question


Le 10/11/2011 10:25, Une Bévue a écrit :
Tu n'as pas testé le code de retour de query, avant de l'utiliser
comme si c'était un PDOStatement. C'est mal.©
Il suffit de tester les codes d'erreur prévus et signalés dans la doc.
Valeurs de retour
PDO::query() retourne un objet PDOStatement, ou FALSE si une erreur
survient.
Cordialement,
--
Olivier Miakinen
Je ne connais rien au PHP et encore moins pour ses appels à BdD,
if($res=$db->query('SELECT ROWID, * FROM categories'))
try{
non ?
ou bien (en glissant sur l'erreur) :
if(@$res=$db->query('SELECT ROWID, * FROM categories'))
try{
sinon
peut-être
$res=$db->query('SELECT ROWID, * FROM categories');
try{
while(@$row=$res->fetch()){
ou ?
$res=$db->query('SELECT ROWID, * FROM categories');
try{
while($row=$res->@fetch()){
???
Qu'en disent-ils sur le NG du PHP ?
--
Stéphane Moriaux avec/with iMac-intel
Par ailleurs, tu as fait un crosspost avec suivi dans fr.comp.lang.php
sans signaler le suivi, ce qui a trompé SAM qui croyait répondre dans
fciwa. Ce n'est pas très bien non plus... ;-)
[suivi nulle part, c'était juste pour prévenir les lecteurs de fciwa
que les réponses sont sur fclp]
Ah OK, suis-je bête, merci beauc
oup, je vais lire cette littérature...
Mon but est de rendre compatible mon appli entre le php de free qui
n'utilise que PDO et le php sur Mac OS X où je peux utiliser SQLite3
directement.
MAIS, d'après ce que j'ai lu sur un manuel php, les prochaines versions
d'icelui ne permettront la manipulation d'une base qu'à travers PDO, la
gestion directe ne sera plus supportée...
c'est bien vrai ???
Ha! Oui! La honte !
Que vont-ils en penser là-bas ?
Vu!
Personne n'y a encore tenté de corriger mes fantaisies.
--
Stéphane Moriaux avec/with iMac-intel