質問

私には2つのテーブルがあると仮定すると、 namesphonesそして、1つのクエリで、いくつかの入力からテーブルへのデータを挿入したいのですが、どうすればできますか?

それができれば、構文を説明してください。

役に立ちましたか?

解決

MySQLは、単一のマルチテーブル挿入をサポートしていません ステートメントを挿入します. 。オラクルは私が知っている唯一のものです、奇妙なことに...

INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)

他のヒント

できません。ただし、aを使用できます 取引 両方を1つのトランザクション内に含めるようにします。

START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;

http://dev.mysql.com/doc/refman/5.1/en/commit.html

同じ問題がありました。私はそれをforループで解決します。

例:

2で書きたい場合 同一 ループを使用したテーブル

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

また

ArrTable = ("Table1", "Table2")

for xArrTable = 0 to Ubound(ArrTable)
 Sql = "INSERT INTO " & ArrTable(xArrTable) & " VALUES ('1','2','3')"
NEXT

小さなクエリがある場合、これが最良の解決策であるかどうかはわかりませんが、クエリが非常に大きく、if/else/case条件を備えた動的スクリプト内にある場合、これは良い解決策です。

複数のSQLステートメントをで実行する必要があります mysqli_multi_query() 働き。

例(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();
?>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top