これは正当なものですか?複数のmysql INSERT文を1つのクエリでPHP
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
これは正当なものですか?複数のmysql INSERT文を1つのクエリでPHP
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
を、そしてあなたが 同じテーブルに同じデータを挿入している場合に応じて、it's much better to insert multiple values with the one insert 例えば一般的に
INSERT INTO a VALUES (1,23),(2,34),(4,33);
INSERT INTO a VALUES (8,26),(6,29);
「速度の挿入」ページを参照していただきありがとうございます。 – SarathChandra
いいえ。別個のクエリであり、そのように呼び出す必要があります。
いいえ、mysql_query()
は一度に1つのクエリしか許可しません。
あなたはこのような複数の行を挿入することができます:それは価値がある何のため
INSERT INTO table (col1, col2)
VALUES (1, 2), (3, 4), (5, 6)
これは、データをダンプするフィールド名を指定することが重要です! – itsricky
、それぞれの文はセミコロンで終わるので、それが有効なSQLですが、PHPは、あなたが利用する可能性があるSQLインジェクション攻撃から保護するために、一度に複数のクエリを送信することはできません。よく書かれていないスクリプト。
あなたはまだのような構文を使用することができます:MySQLのdevのサポートから
INSERT INTO foo VALUES ('a1', 'b1'), ('a2', 'b2');
だから、挿入MySQL dev forum
INSERT INTO table (artist, album, track, length)
VALUES
("$artist", "$album", "$track1", "$length1"),
("$artist", "$album", "$track2", "$length2"),
("$artist", "$album", "$track3", "$length3"),
("$artist", "$album", "$track4", "$length4"),
("$artist", "$album", "$track5", "$length5");
は通常いつものようになります:最初のテーブル名を命名
ONEの挿入ステートメントで複数の値を挿入すると便利です。 :)機能やループ内
コピー/ペーストの例は、($ idを想定することは配列です)
public function duplicateItem($ids)
{
if (isset($ids[0])){ //at least one item
$sqlQuery = "INSERT INTO items (item_id, content) VALUES ";
for($i=0; $i<count($ids); $i++) {
if ($i == count($ids)-1){
$sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."');";
}else{
$sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."'),";
}
}
mysql_query($sqlQuery) or die('Error, insert query failed: '.mysql_error());
}
}
連結を避ける方が良いです。 'implode()'を使ってください。詳細は、この[answer](http://stackoverflow.com/a/780046/4040525)を参照してください。 –
なぜimplode()を使用するのがこの場合に有益でしょうか?上記の質問には、通常のSQL文があります。答えでは、大量のテキスト(大文字の1000個の挿入など)について話します。その場合、連結を避けるのがよいでしょう。 –
私は知っています。そのOKをここで連結して使用してください。昨日、私は両方の答えに気付き、経験則として 'implode()'を使うほうが良いと考えました。 –
INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);
私はこのmysqliのメソッドを使用して、私のPHPプロジェクトで複数のクエリを実行し、私の問題を解決し、[mysqliのマルチクエリー](http://us2.php.net/manual/en/mysqli.multi-query.php) –