php 如何显示mysqli_query错误[重复]

svmlkihl  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(156)

此问题在此处已有答案

Can not silence a mysqli call [closed](1个答案)
Handle specific Exceptions in php(2个答案)
5天前关闭。
我试图显示mysqli_error在我的php脚本把我不断得到黑页,如果查询失败,但返回响应时,成功的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。

z18hc3ub

z18hc3ub1#

从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()
        ));
    }
}

相关问题