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

如果您希望一个查询未能破坏其他 31 个查询,或者剩下很多查询,您只需要在 mysql_query 上执行 die()。否则,您可以更优雅地失败并忽略它,但给自己留个信息。

如果您有可用的 PDO,您可能还想研究它,因为它使用起来更简单一些。

于 2012-10-23T14:16:47.903 回答