What are best practices for creating a multi-page form in PHP that interacts with a MySQL database?

When creating a multi-page form in PHP that interacts with a MySQL database, it is important to break down the form into separate sections for better user experience and data handling. Each page should collect specific information and store it in the database before moving on to the next page. This can be achieved by using session variables to store the form data temporarily until the final submission.

<?php
session_start();

// Check if form data is submitted
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Store form data in session
    $_SESSION['page1_data'] = $_POST['page1_data'];
    $_SESSION['page2_data'] = $_POST['page2_data'];

    // If last page, insert data into database
    if ($_POST['page'] == 'final') {
        $conn = new mysqli("localhost", "username", "password", "database");

        $page1_data = $_SESSION['page1_data'];
        $page2_data = $_SESSION['page2_data'];

        // Insert data into database
        $sql = "INSERT INTO form_data (page1_data, page2_data) VALUES ('$page1_data', '$page2_data')";
        $conn->query($sql);

        // Clear session data
        session_unset();
        session_destroy();

        // Redirect to success page
        header("Location: success.php");
        exit;
    } else {
        // Redirect to next page
        header("Location: page" . ($_POST['page'] + 1) . ".php");
        exit;
    }
}
?>