Mal*_*ala 9 sql database codeigniter
基本上我有一个表有几个标记为Unique的列.我有一个脚本,使用如下命令将一堆值转储到表中:
$this->db->query("INSERT INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)");
Run Code Online (Sandbox Code Playgroud)
我的脚本经常会尝试插入违反其中一列唯一性的行.但是,我不想让脚本因数据库错误而中止,而是希望它继续,可能会输出一些消息.基本上我正在寻找相同的codeigniter
mysql_query("INSERT blah blah blah") or print("fail");
Run Code Online (Sandbox Code Playgroud)
谢谢!
马拉
Til*_*ill 19
是的,我也花了一段时间,让我感到很生气:
$db['default']['db_debug'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
... in config/database.php- 禁用错误页面.
运行查询后,使用此选项检查错误:
if (!empty($this->db->_error_message())) {
echo "FAIL";
}
Run Code Online (Sandbox Code Playgroud)
我知道你已经有了一个解决方案,但是认为这也可能对其他人也有用.
让数据库为您完成工作:
$this->db->query("INSERT IGNORE INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)");
Run Code Online (Sandbox Code Playgroud)
当您使用INSERT IGNORE时,重复键错误之类的内容会变成警告而不是错误,这样您的查询就可以在不中断脚本流的情况下运行.
然后你可以做一个
SHOW WARNINGS;
Run Code Online (Sandbox Code Playgroud)
在所有查询运行之后,查看发生了什么警告.
http://dev.mysql.com/doc/refman/5.1/en/insert.html