如何显示mysqli_query错误

问题描述 投票:0回答:1

我试图在我的 php 脚本中显示 mysqli_error 如果查询失败我会一直得到黑页但在成功时返回响应如果查询失败 mysqli_error($conn) 和 mysqli_errno($conn) 都只显示黑页。 这是我的数据库连接脚本

<?php
$ser = "test";
$user = "test";
$pass = "test";
$db="test";
$conn = mysqli_connect($ser, $user, $pass, $db);
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
  }
?>

我的 Php 查询

<?php
include 'conn.php';
if ($conn) {
    $sql = "INSERT INTO tbl_users (userId, email, pass) VALUES ('$userId', '$email', '$pass')";
    if (mysqli_query($conn, $sql)) {
        echo json_encode(array(
            "status" => "Ok",
            "message" => "Success",
        ));
    } else {
        echo json_encode(array(
            "status" => "Error",
            "message" => mysqli_error($conn),
        ));
    }
}

如果查询运行正确,则能够获得成功响应,但如果我使用 ini_set('display_errors', 1); 一旦发生错误,我将得到一个空白页; 我得到整页错误,但我只需要 mysqli_error 或mysqli_errno.

php error-handling mysqli
1个回答
1
投票

自 PHP 8.1 起,mysqli 错误报告的默认设置为

MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT
,这会导致错误抛出异常,而不是仅仅返回
false
.

如果您想检查代码中的错误而不是获取异常,请使用

mysqli_report(MYSQLI_REPORT_OFF);

更好的解决方案是使用异常处理程序。

if ($conn) {
    $sql = "INSERT INTO tbl_users (userId, email, pass) VALUES ('$userId', '$email', '$pass')";
    try {
        mysqli_query($conn, $sql);
        echo json_encode(array(
            "status" => "Ok",
            "message" => "Success",
        ));
    catch (mysqli_sql_exception $e) {
        echo json_encode(array(
            "status" => "Error",
            "message" => $e->getMessage()
        ));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.