en supposant que j'ai deux tables, names
et phones
et que je souhaite insérer des données d'une entrée dans les tables, dans une seule requête - Comment cela peut-il être fait?
S'il vous plaît, si cela est possible, expliquez la syntaxe.
MySQL ne prend pas en charge l'insertion de plusieurs tables dans un seul instruction INSERT . Oracle est le seul que je sache, curieusement ...
INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
Tu ne peux pas. Cependant, vous POUVEZ utiliser une transaction et les deux doivent être contenus dans une seule transaction.
START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;
J'ai eu le même problème. Je le résous avec une boucle for.
Exemple:
Si je veux écrire dans 2 identiques tables, en utilisant une boucle
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
non plus
ArrTable = ("Table1", "Table2")
for xArrTable = 0 to Ubound(ArrTable)
Sql = "INSERT INTO " & ArrTable(xArrTable) & " VALUES ('1','2','3')"
NEXT
Si vous avez une petite requête, je ne sais pas si c'est la meilleure solution, mais si vous votre requête est très grande et qu'elle est à l'intérieur d'un script dynamique avec des conditions if/else/case, c'est une bonne solution.
Plusieurs instructions SQL doivent être exécutées avec la fonction mysqli_multi_query()
.
Exemple (orienté objet MySQLi):
<?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();
?>