-1

我有一些代码允许用户在他们的服务器上输入他们的数据库的详细信息。在他们提交详细信息后,代码会检查与数据库的连接以查看是否输入了有效的详细信息。如果连接有效或有效,我希望它给出变量的结果为真,如下所示:

$mysqli = new mysqli($_POST['dbHost'],$_POST['dbUser'],$_POST['dbPassword'],$_POST['dbName']);
if ($mysqli->connect_errno) { $badDetails = true; }
else { goodDetails = true; }

问题是,如果细节确实不正确,它会从上面代码的第一行显示一个 PHP 警告,给出“未知的 MySQL 服务器主机”。

解决方法是什么?我不希望 PHP 为此抛出它自己的可见错误,我想自己处理错误。

4

3 回答 3

2

您不必担心视觉错误。在生产环境中,这些应该在 ini 中关闭,并且所有错误都应该出现在服务器上的日志中,而不是仅仅出现在屏幕上。

这是使用display_errors设置和error_reporting()配置的

许多框架使用自定义实现覆盖 PHP 错误处理程序,以根据其严重程度以漂亮的方式显示错误。
为此,您可以覆盖 PHP 错误处理程序

如手册中所见,可以为常规错误和异常注册自定义处理程序。并且还可能触发用户定义的错误。

于 2013-09-30T14:23:34.360 回答
0

只需使用一个die()

$mysqli = new mysqli($_POST['dbHost'],$_POST['dbUser'],$_POST['dbPassword'],$_POST['dbName']) or die("Database Connection Failed");
于 2013-09-30T14:14:04.133 回答
0

一种快速而肮脏的方法是错误抑制:

$con = @mysqli_connect( /* info */ );

请注意,您不应将其保留在那里,因为这将抑制所有错误,并且 mysqli 可能有多个您可能需要了解的错误。

虽然我会先检查主机变量,看看为什么会导致错误。您也可以使用模具。

$con = mysqli_connect(/* info */) or die ("SQL Error!");

至于在哪里看,请尝试查看实际设置的主机 var 并检查它的值:

if (!isset($_POST['dbHost'])) {
    echo "Host var not set!";
} else {
    echo "Host var set: " . $_POST['dbHost']
}
于 2013-09-30T14:15:54.020 回答