如何仅显示JSON代码而不显示PHP警告

时间:2018-12-25 11:40:27

标签: php

在这种情况下,我不小心输入了错误的数据库用户名或密码,我的目标是如何以JSON数据的形式生成错误并以PHP警告或错误的形式(如我的图片)打开
< br />

Error Image

// Here's my PHP Code

if (!empty($_POST)){
   $test_conn = new mysqli('localhost' , $_POST['db_user'] , $_POST['db_pass']);
   $conn = new mysqli('localhost' , $_POST['db_user'] , $_POST['db_pass'] , $_POST['db_name']);
   if ($test_conn->connect_error){
       $response = array('status' => 0 , 'message' => "Failed Connect to Databases");
       print_r(json_encode($response));
   }else{
       // The Code When Username and Password is Correct
   }
}

在这里我知道用户名或密码是错误的,但是我很困惑如何仅在底部的图像中显示json数据而不显示php警告

2 个答案:

答案 0 :(得分:0)

如果确定这是您想要的,只需在脚本顶部添加以下内容来禁用错误:

public class Student{
private String name;
private String ranking;
private int age;
private String country;

// getter and setter

public int CompareTo(Object obj1){
//implement comparation by name or age or etc
}
}

如果要隐藏给定代码的错误,请使用以下命令:

error_reporting(0);

答案 1 :(得分:-1)

您必须取消php错误报告,才能使用自己的connect_error检查。 php documentation on mysqli::$connect_error建议使用@ error control operator来做到这一点,就像这样:

$test_conn = @new mysqli( ... )

这只会抑制由mysqli对象的错误实例化引起的错误。应该清楚的是,然后您必须自己处理这些错误(就像您已经做的那样)。所有其他错误仍然可能导致您的php脚本停止运行,并且不向调用该脚本的AJAX函数返回任何JSON字符串。

正如@Victor在他的答案中正确指出的那样,您可以通过在脚本的开头设置error_reporting(0)来禁用脚本(或其部分)的所有错误。在这种情况下,您不必检查其他可能的错误,例如如果$_POST数组中的数据库凭据未设置或为空。

正如@Ben在他的评论中提到的,您还可以通过设置mysqli_report(MYSQLI_REPORT_STRICT)来使mysqli抛出异常以避免致命错误。这也是解决您问题的可行方案。

作为一般考虑,您应该在php.ini中进行以下设置:

display_errors = Off
error_log = syslog

这可以防止错误消息暴露给www(安全性),同时使/var/log/syslog中的开发人员可以使用它们(可维护性)。