0

単純なので、数字の 1 を 2 に、次に 3 に、というように 32 回置き換える必要があります。私は単純な PHP ループとすべてを作成する方法を知っていますが、これを「クリーン」のままにしておきたいので、皆さんが私を助けてくれます。

あなたが私に提供できる助けをありがとう。

<?php
  $con = mysql_connect("localhost","user","pass");
  if (!$con)
    {
    die('Could not connect: ' . mysql_error());
    }

  mysql_select_db("mbbcom1_rfhl", $con);

  $sql="UPDATE `mbbcom1_rfhl`.`_statbu`
  SET gp= gp + '$_POST[gp1]', g= g + '$_POST[g1]', a= a + '$_POST[a1]', shot= shot + '$_POST[s1]', pm= pm + '$_POST[pm1]', ppg= ppg + '$_POST[ppg1]', shg= shg + '$_POST[shg1]', bs= bs + '$_POST[blk1]', gwg= gwg + '$_POST[gwg1]', sog= sog + '$_POST[sog1]', soa= soa + '$_POST[soa1]', pim= pim + '$_POST[pim1]' WHERE `season` =9 AND `_statbu`.`player_id` = 1";
  if (!mysql_query($sql,$con))
    {
    die('Error: ' . mysql_error());
    }
  mysql_close($con)
  ?>

明確にするために、同じことを行うには次のループが必要ですが、 '$_POST[gp2]', g= g + '$_POST[g2]' ....ect

もう一度、ありがとう

4

1 に答える 1

2

うわー、SQL INJECTION を調べる必要があります。このコードは安全ではありません。最低限、投稿されたすべてのデータに対して mysql_real_escape_string() を実行する必要があります (以下の例)。

ループの仕方について。これがすべて同じテーブルを更新している場合:

//do your connection and db select here
for( $i=1; $i <= 32; $i++ ) {
    $sql = "gp='".mysql_real_escape_string($_POST["gp{$i}"])."'...
    //mysql_query() here
}
//mysql_close() here

mysql_query で die() を実行したいのは、1 つのクエリで他の 31 のクエリが壊れないようにしたい場合、または多くのクエリが残っている場合だけです。それ以外の場合は、より適切に失敗して無視することができますが、自分自身にメッセージを残してください。

使用するのが少し簡単なので、利用できる場合は PDO を調べることもできます。

于 2012-10-23T14:16:47.903 に答える