2017-11-10 9 views
-1
<?php 
$userData = array(); 
while (anything to create a loop) { 
    $value1 = $result1_from_loop; 
    $value2 = $result2_from_loop; 
    $value3 = $result3_from_loop; 
    $userData[] = '("'.$value1.'", "'.$value2.'", "'.$value3.'")'; 
} // THIS ENDS THE WHLE OR FOR LOOP 

$query = 'INSERT INTO users (data1,data2,data3) VALUES' . implode(',', $userData); 
mysql_query($query); 
?> 

上記のコードは、上記のようにテーブルusersに複数のレコードを挿入するのに完全に機能し、非常に高速です。MySQLとPHPを使用して単一のクエリで複数の行を更新する

しかし、以前のようにループを通過した後に同じメソッドを使用して更新しようとしています。私はこれをどのように達成するのか分かりません。私はこのような何かしたい

:私は上記のコードを修正するために近接していない知っている

<?php 
$userData = array(); 
while (Loop statement) { 
    $value1 = $result1_from_loop; 
    $value2 = $result2_from_loop; 
    $value3 = $result3_from_loop; 
    $userData[] = '("'.$value1.'", "'.$value2.'", "'.$value3.'")'; 
} // This ends the WHLE or FOR loop 

$query = 'UPDATE users SET(data1,data2,data3) VALUES' . implode(',',$userData) WHERE data2=$value2 
mysql_query($query); 

を、構文は次のとおりであっても間違っています。私はそれを貼り付けて、私が達成したいもののアイデアを示しました。 WHEREステートメントでは、どのようにdata2がそれぞれの値を知るようになるでしょう$value2

+1

あなたのUPDATE構文が正しくありません。 –

+0

はい、それは正しいことを意味していませんでした。私はちょうどそこに置いて、何をしたいのかという考えを持っています。私は構文を修正することすらできません。私はこのメソッドでINSERTを書く方法しか知りません。 –

+0

あなたのコードは[** SQLインジェクション**](https://en.wikipedia.org/wiki/SQL_injection)攻撃に対して脆弱です。あなたは[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)または[** PDO **](https ://secure.php.net/manual/en/pdo.prepared-statements.php)ドライバ。 [**この記事**](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)には、いくつかの良い例があります。 –

答えて

0

UPDATEは、INSERTとは異なる形式を使用します。それが推奨されていません(以降PHPのバージョンでは完全に削除されます)と、あなたのコードはに対して脆弱であるとしてちょうどメモとして、mysql_queryを使用することはお勧めできませんが、

$query = 'UPDATE users SET data1 = $userData[0], data2 = $userData[1], data3 = $userData[2] WHERE data2=$value2'; 

を:UPDATEの場合は、あなたのコードは次のようになりますSQLインジェクション少なくとも、mysqli_queryを代わりに使用し、準備済みのステートメントを使用することをお勧めします。

+0

ですが、これは私の使用例を修正しません。私がしようとしているのは、MYSQLへの単一の接続を使用して複数の行を更新することです。$ update。= "update statement"を試して、ループの外側にmysql_query($ update)が機能しませんでした。私はmysqliでうまくいかず、ループごとに各レコードを挿入/更新せずにMYSQLでこれを行う方法があるのか​​疑問に思っています。 –

関連する問題