【发布时间】:2011-02-18 16:50:41
【问题描述】:
我已经使用 PDO (MySQL 5.1) 设置 PHP (5.2) 以在发生错误时抛出异常:
$pdo = new PDO(...);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
现在,我有时会遇到一个异常,只告诉我“HY000:一般错误”。我试图从 PDO 中获取更多信息,但我只能说:
- 错误信息():
array(0 => 'HY000') - errorCode():
array(0 => '00000')
失败的查询如下所示:
INSERT INTO user_values
SELECT user_id,
attribute_id,
?,
value
FROM user_values
WHERE user_id = ?
AND set_id = ?
我已确保所有游标都已正确关闭 ($stmt->closeCursor())。在我的声明中调用 fetchAll() 时会引发异常。经过一番搜索,我发现有些人只是忽略了这个错误,但忽略 PDO 异常似乎完全是错误的。
怎么办?我是否必须检查“这是一个插入,没有结果集所以忽略那些异常”(因为我没有单独的插入、选择、更新等方法)。
【问题讨论】:
-
除非规则不同,因为它是插入的一部分,否则您不能使用占位符来表示列/表名...
-
那个?在 SELECT 中用于插入标量值(在本例中为 ID。