CodeIgniter - 继续SQL错误?

时间:2009-12-12 13:12:16

标签: sql database codeigniter

基本上我有一个表有几个标记为Unique的列的表。我有一个脚本,使用如下命令将一堆值转储到表中:

$this->db->query("INSERT INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)");

我的脚本经常会尝试插入违反其中一列唯一性的行。但是,我不想让脚本因数据库错误而中止,而是希望它继续,可能会输出一些消息。基本上我正在寻找等同于

的codeigniter
mysql_query("INSERT blah blah blah") or print("fail");

谢谢!
马拉

2 个答案:

答案 0 :(得分:19)

是的,我也花了一段时间,让我感到很生气:

$db['default']['db_debug'] = FALSE;

...在config/database.php中 - 禁用错误页面。

运行查询后,使用此选项检查错误:

if (!empty($this->db->_error_message())) {
    echo "FAIL";
}

答案 1 :(得分:8)

我知道你已经有了一个解决方案,但是认为这也可能对其他人也有用。

让数据库为您完成工作:

$this->db->query("INSERT IGNORE INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)");

当您使用INSERT IGNORE时,重复键错误之类的内容会变成警告而不是错误,这样您的查询就可以在不中断脚本流的情况下运行。

然后你可以做一个

SHOW WARNINGS;

运行所有查询后,查看发生了什么警告。

http://dev.mysql.com/doc/refman/5.1/en/insert.html