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)
}
这很可能是由于准备工作失败.
根据错误处理,PDO 可能只返回false,而不是引发异常.
如果数据库服务器无法成功准备语句,PDO :: prepare()将返回FALSE或发出PDOException(取决于错误处理).
不完全确定这种行为的定义,说实话......
更新: 在这里.默认行为是静默失败.您需要设置PDO::ATTR_ERRMODE到PDO::ERRMODE_EXCEPTION对于要涨到例外在任何时候.
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2945 次 |
| 最近记录: |