我正在使用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;
谢谢! 布赖恩
答案 0 :(得分:0)
检查error_reporting
中php.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
,当你做错事时会导致它发出呜呜声。如果您启用警告模式,那么还要确保您可以显示这些警告,这可以通过其他人发布的命令来完成。
如果您宁愿手动执行此操作,则可以在每次查询后检查errorCode
和errorInfo
方法,其使用方法记录在我上面链接的错误模式页面上。< / p>