以下に基づく挿入コマンドがあります。
$baseINS = "INSERT INTO table2 (Points_ID, StaticCode) VALUES ";
$arrayINS = explode(", ", $arraystring);
foreach ($arrayINS as &$array1INS) {
$array1INS = "('" . $array1INS . "', '123456')";
}
$arrayvaluesINS = implode(', ', $arrayINS);
$insertSQL2 = $baseINS . $arrayvaluesINS;
は$insertSQL2
、次のトランザクションから照会されます。
$insertSQL = "BEGIN";
mysql_query($insertSQL) or die (mysql_error());
$insertSQL = $insertSQL1;
mysql_query($insertSQL) or die (mysql_error());
$insertSQL = $insertSQL2;
mysql_query($insertSQL) or die (mysql_error());
$insertSQL = "COMMIT";
mysql_query($insertSQL) or die (mysql_error());
($insertSQL1
別のテーブルへの別のSQL挿入はどこにありますか)
テーブル構造は次のとおりです。
table2
(ID
int(50) NOT NULL AUTO_INCREMENT,
StaticCode
varchar(100) NOT NULL,Points_ID
varchar(50) NOT NULL, PRIMARY KEY (ID
), UNIQUE KEYID
(ID
) ) ENGINE=InnoDB
$insertSQL2
さて、例えば次のようにエコーするとしましょうINSERT INTO table2 (Points_ID, StaticCode) VALUES ('24859', '123456'), ('24649', '123456'), ('25166', '123456')
table2 に 3 つの行が表示されることを期待しますが、次のようになります。
- どちらの挿入コマンド (
$insertSQL1
および$insertSQL2
) も、実際にはデータを挿入します。 $insertSQL1
すべてのフォームから table1 の必要なフィールドにすべてのデータを挿入しますが、$insertSQL2
(配列を挿入している) は挿入しません。静的コードを 1 回挿入し、Points_ID を空白のままにします。
エコーされたコマンドを PHPMySQL にコピーするだけで INSERT ステートメントをテストしましたが、想定どおりに動作するので、MySQL のバージョンがそれを処理できることがわかります。
理由はありますか?