Récupérer la dernière requete éxécutée avec PDO

Eléphanteau du PHP | 18 Messages

15 juin 2006, 16:06

Bonjour à tous.

J'utilise PDO pour interfacer avec ma BD (mysql pour l'instant). J'utilise donc 'prepare' pour préparer ma requete, puis je fais des bindParam pour insérer mes paramètres, et enfin un 'execute'.

Malheureusement, je ne peux pas savoir exactement la requête qui est executée : la seule requete que je récupére est celle parametrée, c'est à dire avant de lui passer les paramètres.

Savez vous s'il existe un moyen pour la récupérer ?

Merci d'avance :)

Mammouth du PHP | 1311 Messages

15 juin 2006, 16:27

salut
a tu un petit bout de code, parce que c'est pas tres clair, sinon tu peut faire un dump sur l'objet PDOStatement

Eléphanteau du PHP | 18 Messages

15 juin 2006, 16:38

Code : Tout sélectionner

try{ $query="DELETE FROM ".$tablename." WHERE ".$sqlWhere; $sth = $this->v["pdoDB"]->prepare($query); if ($sth->execute($arrWhere)){ return 1; } else{ if ($this->v["debug"]==1){ $arrError = $sth->errorInfo(); throw new QDException ("<b>Erreur SQL ".$arrError[0]."</b> : ".$arrError[2] ." <br> Lors de la requête : <i>".$query."</i>"); } else return -1; } } catch(PDOException $e){ throw new QDException("-1", $e->getMessage(), $e->getFile(), $e->getLine(), -1, $e->getTrace()); } catch(Exception $e){ throw new QDException("-1", $e->getMessage(), $e->getFile(), $e->getLine(), -1, $e->getTrace()); }
Voial par exemple ma fonction Delete. Une fois que je fais mon "execute", je voudrais avoir accés à la requete réelement executée, pour faire un log par exemple.
Cette fonction recevant une requete parametrée (donc avec des "?" à la place des valeurs), que je complete lors de l'execution avec le tableau arrWhere, donc elle n'est pas complete.

Mammouth du PHP | 1311 Messages

15 juin 2006, 16:57

tente
if ($sth->execute($arrWhere)){
var_dump($sth);
          return 1;
        } 

Eléphanteau du PHP | 18 Messages

15 juin 2006, 17:04

J'avais essayé un print_r dessus, et cela donne le même résultat. Cela me renvoie

Code : Tout sélectionner

object(PDOStatement)#5 (1) { ["queryString"]=> string(34) "DELETE FROM testqddb WHERE id= :id" }

Mammouth du PHP | 1311 Messages

15 juin 2006, 17:25

desolé j'avais pas compris ,
ce que tu veut voir c'est la requete avec les parametres
je ne sais pas nom plus la recupéré mais tu peut toujours essayé de redefinir la methode __toString de pdo
[/php]

Eléphanteau du PHP | 18 Messages

15 juin 2006, 17:27

__tostring ? Je ne la vois pas dans ses caractéristiques...Je vais essayer ca de suite.

Eléphanteau du PHP | 18 Messages

15 juin 2006, 17:29

Je confirme: cette fonction lui est inconnue :/

Bon ben tant pis sinon, ca doit pas être possible.