0

フォーム i$ に入力した後、複数のプレイヤーに対して SQL コードでループを実行しようとしています。

オンラインで答えが見つからないようです。あなたが私に提供できる助けをありがとう。

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

for ($i=1; $i<=6; $i++)
{       
    $sql="UPDATE `mbbcom1_rfhl`.`_statbu`
        SET gp= gp + '$_POST[gp$i]', g= g + '$_POST[g$i]', a= a + '$_POST[a$i]', shot=    shot + '$_POST[s$i]', pm= pm + '$_POST[pm$i]', ppg= ppg + '$_POST[ppg$i]', shg= shg + '$_POST[shg$i]', bs= bs + '$_POST[blk$i]', gwg= gwg + '$_POST[gwg$i]', sog= sog + '$_POST[sog$i]', soa= soa + '$_POST[soa$i]', pim= pim + '$_POST[pim$i]' WHERE `season` =9 AND `_statbu`.`player_id` = $i ORDER BY `_statbu`.`player_id` ASC";
}

if (!mysql_query($sql,$con))
{
    die('Error: ' . mysql_error());
}
mysql_close($con)
?> 
4

3 に答える 3

2

問題が何であるかについて実際に言及していないことを考えると、データベースも実際には希望どおりに更新されていないと仮定します。forループでは実際にSQLステートメントを実行しないためだと思います。よく見ると、SQL 文字列を生成しているだけです。次のステートメントは、現在のようにループの外側ではなく、for ループの内側に配置する必要があります。

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
于 2012-10-22T19:42:26.630 に答える
0

コードに適切なインデントを追加すると、for ループの外でクエリを実行していることがわかるため、最後の更新のみを実行できます。

于 2012-10-22T19:42:09.987 に答える
0

更新クエリが間違っています。注文日を指定することはできません。ループ内でクエリを実行する必要があります。

for ($i=1; $i<=6; $i++)
{       
    $sql = "UPDATE `mbbcom1_rfhl`.`_statbu`
    SET gp= gp + '$_POST[gp$i]', g= g + '$_POST[g$i]', a= a + '$_POST[a$i]', shot= shot + '$_POST[s$i]', pm= pm + '$_POST[pm$i]', ppg= ppg + '$_POST[ppg$i]', shg= shg + '$_POST[shg$i]', bs= bs + '$_POST[blk$i]', gwg= gwg + '$_POST[gwg$i]', sog= sog + '$_POST[sog$i]', soa= soa + '$_POST[soa$i]', pim= pim + '$_POST[pim$i]' 
    WHERE `season` =9 AND `_statbu`.`player_id` = $i"; 
    // ORDER BY `_statbu`.`player_id` ASC";


  if (!mysql_query($sql,$con))
  {
      die('Error: ' . mysql_error());
  }
}

さらに:

  • あなたのコードはSQLインジェクションに対して広く開かれています
  • 非推奨の mysql_* 関数を使用しています
于 2012-10-22T19:43:12.197 に答える