PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了错误报告?从PHP导入.sql文件并显示错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在建立一种从PHP导入.sql文件MysqL数据库方法.这用于执行批量查询.我遇到的问题是错误报告.

$command = "MysqL -u $dbuser --password='$dbpassword' --host='$sqlhost' $dbname < $file";
exec($command, $output);

本质上,这就是将.sql文件导入数据库的方式.问题是我无法知道在执行此命令的PHP脚本中是否发生任何错误.成功的进口与失败完全没有区别.

我努力了:

>使用PHPsql错误报告功能.
>将详细参数添加到命令并检查输出.它仅返回.sql文件内容,仅此而已.
>将错误设置为.sql文件中的用户变量,然后从PHP脚本中查询它.

我希望我不会被迫将错误写入临时表中.有没有更好的办法?

更新:
如果可能的话,如果我能够确定发生了什么错误,而不是仅是一个错误,那将是非常可取的.

解决方法:

尝试使用shell_exec

$output = sHell_exec( "MysqL -u $dbuser --password='$dbpassword' --host='$sqlhost' $dbname < $file" );
// parse $output here for errors

从手册中:

sHell_exec —通过外壳执行命令并以字符串形式返回完整的输出

注意:

PHP在安全模式下运行时,此功能被禁用.

编辑:完整的解决方案:

您需要做的就是抢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,请注明来意。
标签: