我想检查是否可以访问mysql。
我不会有错误消息,只有连接准备就绪时才为真/假。
我试着这样做:
$appDB = new mysqli($data[0]['MYSQL']['HOST'], $data[0]['MYSQL']['BENUTZER'], $data[0]['MYSQL']['PW'], $data[0]['MYSQL']['TABELLE']);
if ($appDB->connect_error)
{ $res['code']=FALSE; }
else
{
$appDB -> close();
$res['code']=TRUE;
}
但是总会出现一条错误消息 - 如何阻止此消息显示?
"<b>Fatal error</b>: Uncaught exception 'mysqli_sql_exception' with message 'Access denied for user ''
@'localhost' (using password: NO)' in /is/htdocs/...mypath
.php:33
Stack trace:
#0 /is/htdocs...mypath.myfile.php(33): mysqli->mysqli('', ''
, '', '')
#1 {main}
thrown in <b>/is/htdocs/wp1076647_373QG1K1B0/butobo/module/4/code/cms_checkcon.php</b> on line <b>33
</b><br />"
答案 0 :(得分:0)
你需要通过try / catch语句“捕获”这个致命的异常。这允许您处理致命错误,然后由于它而不是您的脚本崩溃,您可以输出错误消息并退出:D
PHP例外:http://php.net/manual/en/language.exceptions.php
我希望这会有所帮助。
try
{
$appDB = new mysqli($data[0]['MYSQL']['HOST'], $data[0]['MYSQL']['BENUTZER'], $data[0]['MYSQL']['PW'], $data[0]['MYSQL']['TABELLE']);
if ($appDB->connect_error)
{ $res['code']=FALSE; }
else
{
$appDB -> close();
$res['code']=TRUE;
}
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
exit;
}
这会将ERROR更改为WARNING,这不会破坏您的脚本。从那里,如果你想隐藏一切除了致命的错误,你可以使用这行PHP:
error_reporting(E_ERROR);
答案 1 :(得分:0)
将显示错误消息,因为您的PHP已配置为执行此操作。要使其不显示,只需将其配置为
即可ini_set('display_errors', "0");
但是,此代码也会停止执行。为了防止它,你必须捕获异常。所以它应该像
try {
$appDB = new mysqli($data[0]['MYSQL']['HOST'], $data[0]['MYSQL']['BENUTZER'], $data[0]['MYSQL']['PW'], $data[0]['MYSQL']['TABELLE']);
$res['code']=TRUE;
}
catch (Exception $e)
{
error_log($e);
$res['code']=FALSE;
}
虽然设置error_reporting(E_ERROR);
是相当愚蠢的,因为它会阻止您看到所有其他错误