处理'重复输入错误'在无脂肪的框架中

时间:2017-11-20 11:56:40

标签: php mysql sql fat-free-framework

如何在表中插入重复条目时处理错误? 我尝试了以下操作,但它无法正常工作。

function leaveBalanceRecord($f3)
{
    $sql = 
    "
    INSERT 
    INTO users_leave_balance (user_id, period, leave_type, leave_balance, rollable_till_date)
    VALUES (134, '2017-01', 1, 10.00, NULL)";
    $results = $this->db->exec($sql);
    if(!$results)
    {
        return 'Duplicate Entries';
    }
    return $results;
}

如果出现此错误,如何处理错误并更新记录? 任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:1)

我为您的案例看到两种解决方案:

1)利用MySQL REPLACE INTO语法:

$sql='REPLACE INTO users_leave_balance etc.';
$this->db->exec($sql);

来自docs

  

REPLACE的工作原理与INSERT完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行。

2)抓住PDO例外:

$sql='INSERT INTO users_leave_balance etc.';
try {
  $this->db->exec($sql);
} catch (\PDOException $e) {
  $err=$e->errorInfo;
  if ($err[0]==23000) {
    // duplicate key: do something
  } else {
    // any other error
  }
}

有关如何启用PDO例外的详细信息,请参阅this answer

答案 1 :(得分:0)

看起来你应该添加另一个执行sql,使用update,而不是在返回部分中添加注释