我试图在我的 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 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()
));
}
}