Current Location: Home> Latest Articles> Use stmt_init to implement log insertion and exception logging mechanism

Use stmt_init to implement log insertion and exception logging mechanism

M66 2025-05-17

In PHP development, exception handling and error logging are two very important functions. Especially in production environments, reasonable error tracking and data recording can help developers quickly locate problems and ensure data security. The mysqli extension provides multiple ways to interact with a database, where the mysqli::stmt_init function is a tool for preparing SQL statements. In this article, we will explore how to use mysqli::stmt_init to implement log insertion and exception logging mechanisms, improving error tracking and data security of PHP applications.

1. Introduction to mysqli::stmt_init function

mysqli::stmt_init is a method provided by the PHP mysqli extension to initialize a new statement object. This method is usually used when preparing SQL statements and is used in conjunction with prepared statements to prevent SQL injection attacks.

 $mysqli = new mysqli('localhost', 'user', 'password', 'database');
$stmt = $mysqli->stmt_init();

Through this method, we can ensure the security of SQL statement execution and avoid common SQL injection vulnerabilities.

2. Use mysqli::stmt_init to implement log insertion

Logging logs is an important way to track problems when handling exceptions. We can use mysqli::stmt_init to insert error information, exception details and other data into the log table for subsequent analysis and troubleshooting.

First, we create a database table for logging. The table can contain the following fields:

  • id : unique identity of log entry

  • timestamp : The error occurred time

  • error_message : Error message

  • exception_details : Exception details

  • file : The error file

  • line : The line number where the error occurred

 CREATE TABLE `error_logs` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP,
    `error_message` TEXT NOT NULL,
    `exception_details` TEXT,
    `file` VARCHAR(255),
    `line` INT
);

Next, we can use mysqli::stmt_init to prepare the SQL statement that inserts the log and insert it into the database when an error occurs.

 // Connect to the database
$mysqli = new mysqli('localhost', 'user', 'password', 'database');

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// Prepare log insert statement
$stmt = $mysqli->stmt_init();
$query = "INSERT INTO error_logs (error_message, exception_details, file, line) VALUES (?, ?, ?, ?)";

if ($stmt->prepare($query)) {
    // Suppose an exception is caught
    try {
        // Simulate exceptions
        throw new Exception("Database connection failed");
    } catch (Exception $e) {
        $error_message = $e->getMessage();
        $exception_details = $e->getTraceAsString();
        $file = $e->getFile();
        $line = $e->getLine();

        // Bind parameters and perform insertion
        $stmt->bind_param("ssss", $error_message, $exception_details, $file, $line);
        $stmt->execute();
    }
} else {
    echo "Error preparing statement: " . $mysqli->error;
}

In this example, we create a mysqli_stmt object through mysqli::stmt_init , and then use the prepare() method to prepare the SQL statement inserted into the log. The actual parameters are bound by the bind_param() method, and finally execute() for log insertion.

3. Exception handling and logging mechanism

Exception handling in PHP can be implemented through the try-catch statement block. After the exception is caught, we can record the exception information into the database. This way, not only can we understand the specific information of the error, but we can also ensure that feedback is obtained in a timely manner when problems occur in the system.

In practical applications, we often need to record multiple types of exceptions and errors. By setting different log levels, developers can better track problems.

For example, we can classify database connection errors, file reading errors, external API call failures, etc., and set different log levels for different errors:

  • INFO : General information

  • ERROR : Error message

  • WARNING : Warning message

This can help developers distinguish different types of errors and adopt corresponding processing strategies.

 // Suppose an exception that failed database connection is caught
try {
    $mysqli = new mysqli('localhost', 'user', 'wrong_password', 'database');
    if ($mysqli->connect_error) {
        throw new Exception("Database connection failed");
    }
} catch (Exception $e) {
    // Log database connection errors
    $error_message = $e->getMessage();
    $exception_details = $e->getTraceAsString();
    $file = $e->getFile();
    $line = $e->getLine();

    // usestmt_initInsert error log
    $stmt->bind_param("ssss", $error_message, $exception_details, $file, $line);
    $stmt->execute();
}

4. Improve safety

By using mysqli::stmt_init and preprocessing statements, PHP applications can effectively avoid SQL injection attacks. At the same time, recording error logs can also help developers quickly identify the source of exceptions and fix them. In a production environment, error logs can not only be used for debugging, but also help us conduct security audits and troubleshooting.

To ensure that the log information does not leak sensitive data, it is recommended to properly filter and desensitize the log content to avoid exposing database structure, user information or other privacy data.

5. Conclusion

By combining mysqli::stmt_init and exception handling mechanism, we can achieve efficient error tracking and logging in PHP applications. Logging is not only an important tool for debugging and troubleshooting, but also an important means to ensure application security. Through reasonable error classification, log insertion and exception handling, we can improve the application's error tracking capabilities and data security.

For every PHP developer, understanding and implementing effective logging and exception handling mechanisms is a key step in improving application quality and security.