angenommen, ich habe zwei Tabellen, names
und phones
, und ich möchte Daten von einigen Eingaben in die Tabellen in einer Abfrage einfügen. Wie kann das geschehen?
Erklären Sie die Syntax, falls dies möglich ist.
MySQL unterstützt das Einfügen mehrerer Tabellen in ein einzelnes INSERT-Anweisung nicht. Oracle ist das einzige, von dem ich merkwürdigerweise weiß, dass es das tut ...
INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
Das kannst du nicht. Sie KÖNNEN jedoch eine Transaktion verwenden und beide innerhalb einer Transaktion enthalten.
START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;
Ich hatte das gleiche problem Ich löse es mit einer for-Schleife.
Beispiel:
Wenn ich in 2 identisch Tabellen schreiben möchte, benutze ich eine Schleife
for x = 0 to 1
if x = 0 then TableToWrite = "Table1"
if x = 1 then TableToWrite = "Table2"
Sql = "INSERT INTO " & TableToWrite & " VALUES ('1','2','3')"
NEXT
entweder
ArrTable = ("Table1", "Table2")
for xArrTable = 0 to Ubound(ArrTable)
Sql = "INSERT INTO " & ArrTable(xArrTable) & " VALUES ('1','2','3')"
NEXT
Wenn Sie eine kleine Abfrage haben, weiß ich nicht, ob dies die beste Lösung ist, aber wenn Ihre Abfrage sehr groß ist und sich in einem dynamischen Skript mit if/else/case-Bedingungen befindet, ist dies eine gute Lösung.
Mehrere SQL-Anweisungen müssen mit der Funktion mysqli_multi_query()
ausgeführt werden.
Beispiel (MySQLi-objektorientiert):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO names (firstname, lastname)
VALUES ('inpute value here', 'inpute value here');";
$sql .= "INSERT INTO phones (landphone, mobile)
VALUES ('inpute value here', 'inpute value here');";
if ($conn->multi_query($sql) === TRUE) {
echo "New records created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>