大佬教程收集整理的这篇文章主要介绍了错误报告?从PHP导入.sql文件并显示错误,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立一种从PHP导入.sql文件到MysqL数据库的方法.这用于执行批量查询.我遇到的问题是错误报告.
$command = "MysqL -u $dbuser --password='$dbpassword' --host='$sqlhost' $dbname < $file";
exec($command, $output);
本质上,这就是将.sql文件导入数据库的方式.问题是我无法知道在执行此命令的PHP脚本中是否发生任何错误.成功的进口与失败完全没有区别.
我努力了:
>使用PHP的sql错误报告功能.
>将详细参数添加到命令并检查输出.它仅返回.sql文件的内容,仅此而已.
>将错误设置为.sql文件中的用户变量,然后从PHP脚本中查询它.
我希望我不会被迫将错误写入临时表中.有没有更好的办法?
更新:
如果可能的话,如果我能够确定发生了什么错误,而不是仅是一个错误,那将是非常可取的.
解决方法:
尝试使用shell_exec
$output = sHell_exec( "MysqL -u $dbuser --password='$dbpassword' --host='$sqlhost' $dbname < $file" );
// parse $output here for errors
从手册中:
sHell_exec —通过外壳执行命令并以字符串形式返回完整的输出
注意:
编辑:完整的解决方案:
您需要做的就是抢STDERR并丢弃STDOUT.通过添加’2& 1 1> / dev / null”到命令末尾.
$output = sHell_exec( "MysqL -u $dbuser --password='$dbpassword' --host='$sqlhost' $dbname < $file 2>&1 1> /dev/null" );
$lines = explode( PHP_EOL, $output );
$errors = array();
foreach( $lines as $line )
{
if ( strtolower( substr( $line, 0, 5 ) ) == 'error' )
{
$errors[] = $line;
}
}
if ( count( $errors ) )
{
echo PHP_EOL . 'Errors occurred during import.';
echo implode( PHP_EOL, $errors );
}
else
{
echo 'No Errors' . PHP_EOL;
}
以上是大佬教程为你收集整理的错误报告?从PHP导入.sql文件并显示错误全部内容,希望文章能够帮你解决错误报告?从PHP导入.sql文件并显示错误所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。