如何为失败的sqlite插入生成基本CLI错误消息?

时间:2011-03-27 20:01:44

标签: php sqlite pdo

我正在使用PHP进行一些简单的shell脚本编写,以将现有数据转换为本地计算机上的SQLite表。但是,当我在命令行上运行脚本时,即使INSERT函数明显失败也没有错误(即,当它通过时记录不在表中)。有明显的解决方案吗?

下面的代码是我正在使用的简化版本(它有更多的子循环,等等,这使得很难找到未在表格中插入的内容)。例如,如果person的名称中包含换行符,则不会插入,但我没有错误消息来确定问题。另外,我最初忘记在emp_name文本字段周围使用单引号,并且在命令行上也没有出现错误。

$db = new PDO('sqlite:mydatabase.sqlite');
$db->exec("CREATE TABLE employee_data (emp_id INTEGER, emp_name TEXT);");    
$db->beginTransaction();
foreach($people_data as $person) {
  $db->exec("INSERT INTO employee_data VALUES ('{$person->emp_id}', '{$person->emp_name}');");
}
$db->commit();
$db = NULL;

谢谢! 布赖恩

4 个答案:

答案 0 :(得分:0)

检查error_reportingphp.ini中的/etc/php5/cli (ubuntu/debian)

答案 1 :(得分:0)

您应该将error_reporting设置为适当级别,将display_errors设置为On。 这可以通过以下方式完成:

ini_set('display_errors', 'on');
error_reporting(E_ALL & ~E_NOTICE);

答案 2 :(得分:0)

您可以添加:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', true);

在脚本顶部启用错误报告。

同样在php.ini文件中,您可以启用日志记录到PHP错误日志文件。这可能是使用CLI脚本的最简单方法,因此您可以在另一个终端中tail -f

答案 3 :(得分:0)

感谢您使用PDO!

默认情况下,PDO是静默的。 You might want to either enable Warnings mode or Exceptions mode使用setAttribute,当你做错事时会导致它发出呜呜声。如果您启用警告模式,那么还要确保您可以显示这些警告,这可以通过其他人发布的命令来完成。

如果您宁愿手动执行此操作,则可以在每次查询后检查errorCodeerrorInfo方法,其使用方法记录在我上面链接的错误模式页面上。< / p>