3

「内破」を使用して効果的な方法で多くの値 (たとえば 1000) の配列を挿入するクエリを作成しようとしています。これがコードです。

$sql = array(); 
foreach( $return as $key=>$row ) {
$sql[] = '("'.mysql_real_escape_string($row['fullname']).'",   '.$row['age'].','.$row['since'].','.'"'.mysql_real_escape_string($row['description']).'")';
}
mysql_query('INSERT INTO data (name, age, since, description) VALUES '.implode(',', $sql));

私のクエリは、レコード配列をテーブルに挿入しdataます。クエリが存在する場合はレコードを更新し、そうでない場合はレコードを挿入するようにクエリを変更したいと考えています。

4

1 に答える 1

11

おそらく必要なのは、入力されているデータを実際に参照できる「ON DUPLICATE KEY」のバージョンです。

INSERT INTO data (name, age, since, description) VALUES
     ("Bob", 23, "01-01-1980", "friend"),
     ("Bill", 33, "03-01-1980", "tall"),
     ("Jane", 43, "12-01-1980", "thin")
 ON DUPLICATE KEY UPDATE age=VALUES(age),
                         since=VALUES(since),
                         description=VALUES(description);

あなたがそれを読んだとき、うまくいけば自明ですか?


$sql = array();   
foreach( $return as $key=>$row ) {  
    $sql[] = '("'.mysql_real_escape_string($row['fullname']).'",   '.$row['age'].','.$row['since'].','.'"'.mysql_real_escape_string($row['description']).'")';  
}  
mysql_query('INSERT INTO data (name, age, since, description) VALUES '.implode(',', $sql). ' ON DUPLICATE KEY UPDATE age=VALUES(age), since=VALUES(since), description=VALUES(description);');  

編集して、これを上記のユーザーのコードに追加します。

于 2012-08-27T06:29:52.100 に答える