Comment débugger une classe
nexitude
Messages postés
9
Statut
Membre
-
nexitude Messages postés 9 Statut Membre -
nexitude Messages postés 9 Statut Membre -
Bonjour,
Quand je créé une classe, j'ai du mal à débugger car je ne sais pas comment afficher mes erreurs SQL.
Je vous donne un exemple (sans les méthodes et attributs) :
J'ai volontairement mis un erreur au niveau de :=prenom
Lorsque j’exécute, cela ne me dit pas où est exactement mon erreur et je me mets à chercher partout.
Dans une fonction sans objet, j'aurais mis ma requête dans une variable et fais un return mais dans mon cas on ne peut pas.
J'ai essayé avec try et catch mais rien n'y fait. J'obtiens seulement Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number
Comment faites vous pour débugger une classe utilisant PDO ?
Quand je créé une classe, j'ai du mal à débugger car je ne sais pas comment afficher mes erreurs SQL.
Je vous donne un exemple (sans les méthodes et attributs) :
class cAction {
public function update(cAction $myAction) {
$q = $this->_db->prepare('UPDATE action SET prenom = :=prenom WHERE id = :id');
$q->bindValue(':prenom', $myAction->prenom());
$q->bindValue(':id', $myAction->id(), PDO::PARAM_INT);
$q->execute();
}
J'ai volontairement mis un erreur au niveau de :=prenom
Lorsque j’exécute, cela ne me dit pas où est exactement mon erreur et je me mets à chercher partout.
Dans une fonction sans objet, j'aurais mis ma requête dans une variable et fais un return mais dans mon cas on ne peut pas.
J'ai essayé avec try et catch mais rien n'y fait. J'obtiens seulement Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number
Comment faites vous pour débugger une classe utilisant PDO ?
1 réponse
Bonjour,
Ben... comme tu as fais !
Avec un Try Catch.
Et... que veux tu d'autre comme message ???
par contre, pour ma part, j'utilise pas le BindParam... je préfère utiliser un Array
comme ceci :
Ben... comme tu as fais !
Avec un Try Catch.
J'ai essayé avec try et catch mais rien n'y fait. J'obtiens seulement Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number
Et... que veux tu d'autre comme message ???
par contre, pour ma part, j'utilise pas le BindParam... je préfère utiliser un Array
comme ceci :
//je sors la requête pour en faire un echo si besoin (en cas de pb par exemple)
$sql = "UPDATE action SET prenom = :=prenom WHERE id = :id";
//je place les variables dans un Array (là aussi pour les afficher au cas ou)
$a_datas = array(
':id' => $myAction->id()
,':prenom'=>$myAction->prenom()
);
//exécution de la requête :
try{
$q = $this->_db->prepare($sql);
$res = $q->execute($a_datas);
}catch(Exception $e) {
echo "<br><b>Erreur !</b> ".$e->getMessage()."<br>";
echo "<br> Requete : ".$sql;
echo "<br> Variables : <br>";
print_r($a_datas);
}
En tout cas je vais utiliser ton astuce du Array.
Merci pour ta réponse