How can PHP be optimized to handle form submissions and database queries more efficiently in a multi-step form process?

To optimize PHP for handling form submissions and database queries more efficiently in a multi-step form process, you can use session variables to store form data across different steps and batch database queries to reduce the number of database calls.

<?php
session_start();

// Step 1: Process form data and store in session
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['step1_submit'])) {
    $_SESSION['step1_data'] = $_POST;
}

// Step 2: Process form data and store in session
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['step2_submit'])) {
    $_SESSION['step2_data'] = $_POST;
}

// Step 3: Process form data and store in session
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['step3_submit'])) {
    $_SESSION['step3_data'] = $_POST;

    // Batch insert data into database
    $conn = new mysqli("localhost", "username", "password", "database");
    $data = array_merge($_SESSION['step1_data'], $_SESSION['step2_data'], $_SESSION['step3_data']);
    $sql = "INSERT INTO table_name (col1, col2, col3) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sss", $data['field1'], $data['field2'], $data['field3']);
    $stmt->execute();

    // Clear session data
    unset($_SESSION['step1_data']);
    unset($_SESSION['step2_data']);
    unset($_SESSION['step3_data']);
}
?>