首頁  >  問答  >  主體

如何顯示 mysqli_query 錯誤

<p>我試圖在我的php腳本中顯示mysqli_error,如果查詢失敗,我會不斷收到黑頁,但在成功時回傳回應,如果查詢失敗,mysqli_error($conn)和mysqli_errno($conn)都只是顯示黑頁。 這是我的資料庫連線腳本</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("Connection failed: " . mysqli_connect_error()); } ?></pre> <p>我的 PHP 查詢</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" => "Success", )); } else { echo json_encode(array( "status" => "Error", "message" => mysqli_error($conn), )); } }</pre> <p>如果查詢運行正確,則能夠獲得成功回應,但如果使用<strong>ini_set('display_errors', 1);</strong> ,一旦發生錯誤,我會得到一個空白頁;< /strong> 我得到整頁錯誤但我只需要mysqli_error 或mysqli_errno。 </p>
P粉713846879P粉713846879437 天前524

全部回覆(1)我來回復

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

    回覆
    0
  • 取消回覆