我有一个表,其列必须具有 UNIQUE 值(但它也可能是多列 UNIQUE 索引,问题是一样的)。在我的 PHP 脚本中,我必须在该表中插入一行。
如果出现问题,我正在寻找一种方法,而不是 MySQL 特定的方法来退出 PHP 脚本,并且问题不违反 UNIQUE 约束。为了让事情变得更简单,我不想在 :D 之前使用 SELECT 查询
目前我正在做这样的事情:
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]
但它是特定于驱动程序的错误代码。与 ON DUPLICATE KEY UPDATE 相同。