Heim  >  Fragen und Antworten  >  Hauptteil

So zeigen Sie mysqli_query-Fehler an

<p>Ich versuche, einen mysqli_error in meinem PHP-Skript anzuzeigen und erhalte immer wieder eine schwarze Seite, wenn die Abfrage fehlschlägt, aber bei Erfolg eine Antwort zurückgibt, und wenn die Abfrage fehlschlägt, sowohl mysqli_error($conn) als auch mysqli_errno($conn) Zeigt nur eine schwarze Seite an. Dies ist mein Datenbankverbindungsskript</p> <pre class="brush:php;toolbar:false;"><?php $ser = "test"; $user = "test"; $pass = "test"; $db="test"; $conn = mysqli_connect($ser, $user, $pass, $db); if (!$conn) { die("Verbindung fehlgeschlagen: " . mysqli_connect_error()); } ?></pre> <p>Meine PHP-Abfrage</p> <pre class="brush:php;toolbar:false;"><?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" )); } anders { echo json_encode(array( "status" ="Fehler" "message" )); } }</pre> <p>Wenn die Abfrage korrekt ausgeführt wird, kann ich eine erfolgreiche Antwort erhalten, aber wenn ich <strong>ini_set('display_errors', 1);</strong> verwende, erhalte ich eine leere Seite;< /strong> Ich erhalte vollständige Seitenfehler, aber ich brauche nur mysqli_error oder mysqli_errno. </p>
P粉713846879P粉713846879386 Tage vor481

Antworte allen(1)Ich werde antworten

  • P粉538462187

    P粉5384621872023-09-02 11:56:45

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

    Antwort
    0
  • StornierenAntwort