当前位置: 首页> 最新文章列表> 使用 $mysqli->errno 和 $mysqli->error 打印完整错误日志

使用 $mysqli->errno 和 $mysqli->error 打印完整错误日志

M66 2025-05-28
  • :该属性返回最后一次 MySQL 操作的错误代码。如果没有错误发生,它将返回 0。

  • mysqli::$error:该属性返回最后一次 MySQL 操作的错误描述信息。如果没有错误发生,它将返回空字符串。

这两个属性对于开发人员在调试数据库相关问题时非常有用,能够提供足够的错误信息来帮助找出问题所在。

2. 连接数据库时的错误调试

数据库连接是与 MySQL 服务器交互的第一步。如果数据库连接失败,通常是由于服务器地址、用户名、密码或者数据库名错误引起的。使用 mysqli::$errnomysqli::$error 可以帮助我们了解具体的错误信息。

下面是一个示例代码,演示如何使用这两个属性来捕获并打印连接错误:

<?php
// 设置数据库连接参数
$servername = "m66.net";
$username = "root";
$password = "password";
$dbname = "test_db";

// 创建 MySQLi 连接
$conn = new mysqli($servername, $username, $password, $dbname);

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

echo "连接成功!";
$conn->close();
?>

在这个代码中,我们通过 connect_error 来检查是否存在连接问题,并通过 connect_errnoconnect_error 打印出具体的错误信息。

3. 执行查询时的错误调试

如果数据库连接成功,但在执行 SQL 查询时发生错误,可以使用 mysqli::$errnomysqli::$error 来捕获查询错误。以下是一个查询错误的示例:

<?php
// 设置数据库连接参数
$servername = "m66.net";
$username = "root";
$password = "password";
$dbname = "test_db";

// 创建 MySQLi 连接
$conn = new mysqli($servername, $username, $password, $dbname);

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

// 执行查询
$sql = "SELECT * FROM non_existent_table"; // 假设这个表不存在
$result = $conn->query($sql);

// 检查查询是否成功
if (!$result) {
    echo "查询失败: " . $conn->errno . " - " . $conn->error;
}

$conn->close();
?>

在这个例子中,我们故意执行了一个不存在的表的查询,导致查询失败。使用 errnoerror 打印出具体的错误代码和错误描述。

4. 错误日志输出和格式化

在实际开发中,错误信息可能需要更详细的日志记录,以便后期分析和调试。通过将错误信息输出到文件或日志管理系统,可以更加方便地追踪问题。以下是一个将错误信息记录到文件的示例:

<?php
// 设置数据库连接参数
$servername = "m66.net";
$username = "root";
$password = "password";
$dbname = "test_db";

// 创建 MySQLi 连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    // 将错误信息写入日志文件
    error_log("连接失败: " . $conn->connect_errno . " - " . $conn->connect_error, 3, "error_log.txt");
    exit();
}

// 执行查询
$sql = "SELECT * FROM non_existent_table"; // 假设这个表不存在
$result = $conn->query($sql);

// 检查查询是否成功
if (!$result) {
    // 将错误信息写入日志文件
    error_log("查询失败: " . $conn->errno . " - " . $conn->error, 3, "error_log.txt");
}

$conn->close();
?>

在这个示例中,我们使用 error_log 函数将错误信息写入到 error_log.txt 文件中。这样就可以在后期查看这个日志文件,方便排查问题。

5. 总结

使用 mysqli::$errnomysqli::$error 属性,可以帮助我们在 PHP 中捕获并打印详细的 MySQL 错误信息。这对于调试数据库连接问题和查询错误非常有帮助。通过合理地使用这些属性,我们能够快速定位问题并进行修复,提高开发效率。

希望本文能够帮助你理解如何在 MySQL 数据库操作中有效使用这两个属性进行错误调试。