php pdo准备函数返回

ede*_*ter 2 php pdo prepared-statement

不知怎的,我的执行语句说对象没有成员"执行".怎么了?

class EdlSqliteDb
{
const SQLITE_DRIVER = "sqlite:";

var $dbh;
var $qIndex = Array();

//
function EdlSqliteDb($dsn) 
{
    try 
    {
        $this->dbh = new PDO(self::SQLITE_DRIVER . $dsn);
    } 
    catch (PDOException $e)
    {
        echo "Error connecting: " . $e->getMessage() . ' ' . self::SQLITE_DRIVER . $dsn;
        die();
    }

    return;
}

//
function addQ($index,$q)
{
    $this->qIndex[$index] = $q;
}

//
function PrepareQ($index)
{
    try
    {
        $stmt = $this->dbh->prepare($this->qIndex[$index]);
    }
    catch (PDOException $e)
    {
        echo "Db Prepare Error: " . $e->getMessage();
        die();
    }
    return $stmt;
}

//
function DbExecutePrepared($index, $arrParameters)
{
    $stmt = $this->PrepareQ($index);
    if ($stmt->execute($arrParameters)) 
    {
        $row = $stmt->fetch();
        return $row;
    }
    else 
    {
        print "<p>dbquery(): database table update execute error</p>\n";
        die();
    }
}
Run Code Online (Sandbox Code Playgroud)

}

Pek*_*ica 9

这很可能是由于准备工作失败.

根据错误处理,PDO 可能只返回false,而不是引发异常.

如果数据库服务器无法成功准备语句,PDO :: prepare()将返回FALSE或发出PDOException(取决于错误处理).

不完全确定这种行为的定义,说实话......

更新: 在这里.默认行为是静默失败.您需要设置PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION对于要涨到例外在任何时候.

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
Run Code Online (Sandbox Code Playgroud)