找不到PDOStatement :: Execute = /的错误

时间:2011-03-25 03:11:33

标签: php pdo

我开始构建一个我将用于我的应用程序的小PDO包装器。但是,当我开始编码时,我遇到了一个似乎无法解决的问题。

我遇到的问题是PDOStatement的execute()返回false,我不知道值绑定或执行是否有问题。我已经测试了查询(无论如何非常简单)并且它工作正常。与服务器的连接也正常。

希望你能帮忙!这是我的代码:

    <?php

class DataBase {

    private $PDO;
    private static $instancia;

    public static function getInstance() {
        if (!self::$instancia instanceof self) {
            self::$instancia = new self;
        }
        return self::$instancia;
    }

    function __construct() {
        $configuracion = Configuracion::getInstance();
        // echo "mysql:host={$configuracion->dbHost};dbname=mysql", $configuracion->dbUser, $configuracion->dbPassword;
        try {
            $this->PDO = new PDO("mysql:host={$configuracion->dbHost};dbname=mysql", $configuracion->dbUser, $configuracion->dbPassword);
            debug("conectado a la db", __FILE__, __LINE__);
        } catch (PDOException $e) {
            debug($e->getMessage(), __FILE__, __LINE__);
        }
    }

    function selectDistanceFromDistances($a, $b) {

        $sentencia = $this->PDO->prepare('SELECT distance FROM distances WHERE a = ? AND b = ?;');

        // debug($sentencia->execute(array($a, $b)));
        $sentencia->bindValue(1, 15, PDO::PARAM_INT);

        $sentencia->execute();
        $this->PDO->errorInfo();

        $resultado = $sentencia->fetchAll();

        return $resultado;
    }

}

?>

谢谢!

1 个答案:

答案 0 :(得分:4)

    $sentencia->execute();
    $this->PDO->errorInfo();

您正在执行,然后询问错误信息,但您实际上并没有对错误信息做任何事情!你似乎有一个调试功能,所以在这里使用似乎是一个好主意。

您的查询有两个占位符,但您只绑定了其中一个占位符,所以这可能就是错误。

您可能需要考虑turning on exceptions mode并使用try / catch。默认情况下,PDO在构造函数之外是 silent