如果对于下面的给定代码,例如数据库名称无效,如何防止连接错误?
$mysql = new mysqli('localhost', 'user', 'pass', 'wrongdatabase');
if($mysql->connect_errno)
die($mysql->connect_error);
if语句将输出正确的错误消息,但第一行仍会发出警告,其中显示
Warning: mysqli::mysqli() [<a href='mysqli.mysqli'>mysqli.mysqli</a>]: (42000/1049): Unknown database 'wrongdatabase' in C:\wamp\www\example.php on line 14
我知道使用PDO你只需将它包装在try / catch块中,但是如何用MySQLi做呢?
答案 0 :(得分:6)
我只是@ -ing它。
这是手动错误抑制不是绝对邪恶的少数情况之一。
请注意,您将异常与错误混淆。虽然您也可以捕获它,但是如果您创建了一个简单的自定义错误处理程序,它将从任何错误中抛出异常 虽然我有一种感觉,你错误地采取了异常,作为一种错误抑制功能。 无论如何,你应该从不因错误而死。至少做到这一点
@$mysql = new mysqli('localhost', 'user', 'pass', 'wrongdatabase');
if($mysql->connect_errno) trigger_error($mysql->connect_error,E_USER_ERROR);
这是一个必须要做的错误控制 在具有合理设置的实时服务器上,它将记录错误,而不是将其直接吐出到用户并发送适当的HTTP标头。虽然最好有一个自定义错误处理程序来更灵活地处理这些错误