【发布时间】:2013-05-17 18:15:28
【问题描述】:
我有一个表,其中的列必须具有 UNIQUE 值(但它也可能是多列 UNIQUE 索引,问题是一样的)。在我的 PHP 脚本中,我必须在该表中插入一行。
我正在寻找一种方法,而不是特定于 MySQL,如果出现问题,则退出 PHP 脚本,而问题是不是违反 UNIQUE 约束。为了让事情变得更简单,我不想在之前使用 SELECT 查询:D
目前我正在做这样的事情:
try
{
$stmt = $dbh->prepare($someinsertquery);
$stmt->bindParam(':somecol', $somecol);
$stmt->execute();
}
catch (PDOException $e)
{
$errcode = $e->getCode();
if (! ($e->getCode() === '23000'))
{
echo 'Error inserting into db: ' . $e->getMessage();
var_dump($e->getTrace());
exit();
}
}
问题是这样我也错过了与外键相关的错误。我认为如果我在插入新行时不会出现外键问题,那没关系,但如果我将来更改表怎么办?我可以使用
PDOStatement::errorInfo[1]
但它是driver specific error code。与 ON DUPLICATE KEY UPDATE 相同。
【问题讨论】:
标签: php database exception pdo unique-constraint