插件窝 干货文章 php 输出sql错误

php 输出sql错误

错误 mysqli 使用 SQL 597    来源:    2025-03-19

在PHP中,如果你想捕获并输出SQL错误,可以使用try-catch块来捕获异常,或者使用mysqliPDO扩展提供的错误处理功能。以下是几种常见的方法:

1. 使用 mysqli 扩展

如果你使用的是 mysqli 扩展,可以通过 mysqli_error() 函数来获取最后一次SQL语句执行时的错误信息。

$mysqli = new mysqli("localhost", "username", "password", "database");

// 检查连接是否成功
if ($mysqli->connect_error) {
    die("连接失败: " . $mysqli->connect_error);
}

// 执行SQL查询
$sql = "SELECT * FROM non_existent_table";
if (!$mysqli->query($sql)) {
    // 输出SQL错误信息
    echo "SQL错误: " . $mysqli->error;
}

$mysqli->close();

2. 使用 PDO 扩展

如果你使用的是 PDO 扩展,可以通过设置 PDO::ATTR_ERRMODE 属性为 PDO::ERRMODE_EXCEPTION 来捕获异常,并在 catch 块中输出错误信息。

try {
    $pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 执行SQL查询
    $sql = "SELECT * FROM non_existent_table";
    $pdo->query($sql);
} catch (PDOException $e) {
    // 输出SQL错误信息
    echo "SQL错误: " . $e->getMessage();
}

3. 使用 try-catch 块捕获异常

如果你使用的是 mysqliPDO,并且启用了异常处理,你可以使用 try-catch 块来捕获并处理SQL错误。

try {
    $mysqli = new mysqli("localhost", "username", "password", "database");

    // 检查连接是否成功
    if ($mysqli->connect_error) {
        throw new Exception("连接失败: " . $mysqli->connect_error);
    }

    // 执行SQL查询
    $sql = "SELECT * FROM non_existent_table";
    if (!$mysqli->query($sql)) {
        throw new Exception("SQL错误: " . $mysqli->error);
    }

    $mysqli->close();
} catch (Exception $e) {
    // 输出错误信息
    echo $e->getMessage();
}

4. 使用 error_log() 记录错误

如果你不想直接在页面上显示错误信息,可以使用 error_log() 函数将错误信息记录到服务器的错误日志中。

try {
    $pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 执行SQL查询
    $sql = "SELECT * FROM non_existent_table";
    $pdo->query($sql);
} catch (PDOException $e) {
    // 记录错误信息到日志
    error_log("SQL错误: " . $e->getMessage());
}

总结

  • 使用 mysqli_error()PDOException 来捕获SQL错误。
  • 使用 try-catch 块来处理异常。
  • 使用 error_log() 将错误信息记录到日志中,而不是直接输出到页面。

根据你的需求和项目结构,选择合适的方法来处理和输出SQL错误。