W3docs

Insert data into multiple tables using one form

To insert data into multiple tables using one form in PHP, you can use a single SQL statement with multiple INSERT INTO clauses, or you can use multiple individual SQL statements, one for each table.

To insert data into multiple tables using one form in PHP, you can use multiple INSERT INTO statements in a single string, or you can use multiple individual SQL statements, one for each table.

Here is an example of using multiple INSERT INTO statements in a single string:

Example of using multiple INSERT INTO statements in a single string

<?php

$sql = "INSERT INTO table1 (column1, column2) VALUES ('$value1', '$value2');
        INSERT INTO table2 (column1, column2) VALUES ('$value3', '$value4');
        INSERT INTO table3 (column1, column2) VALUES ('$value5', '$value6')";

if ($conn->multi_query($sql) === true) {
    do {
        if ($result = $conn->store_result()) {
            $result->free();
        }
    } while ($conn->next_result());
    echo "New records created successfully";
} else {
    echo "Error: " . $conn->error;
}

<div class="alert alert-info flex not-prose"> Watch a course <span class="hidden md:block">Watch a video course </span> Learn object oriented PHP</div>

Here is an example of using multiple individual SQL statements:

Example of using multiple individual SQL statements

<?php

$sql1 = "INSERT INTO table1 (column1, column2) VALUES ('$value1', '$value2')";
$sql2 = "INSERT INTO table2 (column1, column2) VALUES ('$value3', '$value4')";
$sql3 = "INSERT INTO table3 (column1, column2) VALUES ('$value5', '$value6')";

$success = true;
if ($conn->query($sql1) === true) {
    if ($conn->query($sql2) === true) {
        if ($conn->query($sql3) === true) {
            echo "New records created successfully";
        } else {
            $success = false;
            echo "Error on table3: " . $conn->error;
        }
    } else {
        $success = false;
        echo "Error on table2: " . $conn->error;
    }
} else {
    $success = false;
    echo "Error on table1: " . $conn->error;
}

<div class="alert alert-warning not-prose"> Important: Executing multiple queries without a transaction risks data inconsistency if one fails. Use $conn->begin_transaction(), $conn->commit(), and $conn->rollback() to ensure atomicity. Additionally, direct variable interpolation is vulnerable to SQL injection. Always use prepared statements ($conn->prepare()) for production code. </div>