在PHP中处理MySQL错误

时间:2013-08-11 08:45:53

标签: php mysql error-handling

在开发我的网站时,我使用mysql_error()来显示错误,因此我知道如何修复它们。

我的问题是......当网站上线时,我应该如何处理错误,因为我不希望用户看到错误,而是看到一个用户友好的消息,如"糟糕,出了问题"

6 个答案:

答案 0 :(得分:2)

通常你想在实时环境中记录这些错误(意思是,你写错误信息和一些进一步的信息,如时间,IP,..到文件) 在用户端,您还应该向用户提供一些反馈,因此请打印一条漂亮的错误消息,以便用户知道出现了问题。

只需使用Google查找一些Logger库。大多数情况下,它们可以配置为改变实时和开发环境中的行为! 您可以查看:http://www.php-fig.org/psr/3/

答案 1 :(得分:1)

首先,我强烈建议从已弃用的mysql_函数迁移到MySQLiPDO类之一。两者都更加安全,并且针对当前和可预见的PHP版本进行维护。

显示错误的一些可能解决方案可能是:

$sql = new mysqli($host, $user, $password, $database);
$query = //your query

//Option 1
$result = $sql->query($query) or die("Something has gone wrong! ".$sql->errorno);
//If the query fails, kill the script and print out a user friendly error as well 
//as an error number for them to quote to admins if the error continues to occur, 
//helpful for debugging for you, and easier for users to understand

//Option 2
$result = $sql->query($query);
if($result) {
    //if the query ran ok, do stuff
} else {
    echo "Something has gone wrong! ".$sql->errorno;
    //if it didn't, echo the error message
}

您还可以使用PHP error_log函数将新错误添加到错误日志中,其中可能包含要查看的管理员的完整$sql->error详细信息,并完全跳过$sql->errorno打印输出。有关错误记录的更多信息,请查看PHP Docs

答案 2 :(得分:0)

在开发您的网站时,您不应使用mysql_error(),因为您不应使用任何mysql_*函数,因为它们已被弃用。

最基本的错误处理是抛出Exception。异常处理程序应将错误消息与stack trace一起记录并输出错误页面。

答案 3 :(得分:0)

看看this tutorial,我认为它有你要搜索的内容。

答案 4 :(得分:-1)

您需要处理从SQL查询中收到的答案。就像是成功还是错误。 像这样:

<?php
    $response = 0;
    $con=mysqli_connect("localhost","my_user","my_password","my_db");
    // Check connection
    if (mysqli_connect_errno()){
        $response = "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    // Perform a query, check for error
    if (!mysqli_query($con,"INSERT INTO Persons (FirstName) VALUES ('Glenn')")){
        $response = "Error description: " . mysqli_error($con);
    }

    mysqli_close($con);

    echo $response;
?>

然后在前端,您可以使用jQuery插件或某些框架为响应提供格式。我建议使用:jquery确认。 参考文献: https://www.w3schools.com/php/func_mysqli_error.asp https://craftpip.github.io/jquery-confirm/

如果要处理特定错误,请通过检测确切的错误编号代码来尝试。 https://dev.mysql.com/doc/refman/5.5/en/server-error-reference.html https://www.php.net/manual/es/mysqli.errno.php

答案 5 :(得分:-1)

您可以使用: if (mysqli_error($conn)) { $error = 'Oops something went wrong!'; } echo $error;

$conn代表用于执行查询的数据库连接。