le blog technique de la team weedo
Je suis tombé sur un bug PDO qui m'a fait perdre beaucoup de temps :
J'avais cette requête :
$query = $pdo->prepare($sql); $result = $query->execute(); if ($result === false) { var_dump($result); echo $pdo->errorCode(); var_dump($pdo->errorInfo()); }
J'obtenais :
(bool)false 00000 Array() /* c'est à dire tableau vide, pas de message d'erreur */
execute() échouait mais sans code ni message d'erreur
J'ai remplacé mon code par :
$result = $pdo->query($sql); if ($result === false) { var_dump($result); echo $pdo->errorCode(); var_dump($pdo->errorInfo()); }
Et là j'ai eu mon message erreur :
(bool)false 00000 [0] => 42S02 [1] => 1146 [2] => Table 'xxxx' doesn't exist
Conclusion, si votre prepare()/execute() ne fonctionne pas sans message d'erreur, remplacez le temporairement par un query() qui sera peut-être plus bavard.
[EDIT] Ce bug est le même que celui décrit ici : https://bugs.php.net/bug.php?id=37285
K.
Comments 1 Comment
Je suis tombé sur un bug PDO qui m'a fait perdre beaucoup de temps :
$query = $pdo->prepare($sql);
$result = $query->execute();
if ($result === false) {
var_dump($result);
echo $pdo->errorCode();
echo $query->errorCode();
var_dump($pdo->errorInfo());
}