如何顯示 mysqli_query 錯誤
P粉713846879
P粉713846879 2023-09-01 13:52:57
0
1
568
<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粉713846879
P粉713846879

全部回覆(1)
P粉538462187

自 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()
        ));
    }
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板