基本上我有一个表有几个标记为Unique的列的表。我有一个脚本,使用如下命令将一堆值转储到表中:
$this->db->query("INSERT INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)");
我的脚本经常会尝试插入违反其中一列唯一性的行。但是,我不想让脚本因数据库错误而中止,而是希望它继续,可能会输出一些消息。基本上我正在寻找等同于
的codeignitermysql_query("INSERT blah blah blah") or print("fail");
谢谢!
马拉
答案 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;
运行所有查询后,查看发生了什么警告。