UPDATE表有两个$ _POST值?

时间:2013-10-30 04:23:51

标签: php

如果我有一个名字数组,并指出如何将这些数据插入mysql?

名称: 下面提到的$_POST['playername']的结果

matt
john
kevin
ryan
anthony
mike
luke
brian
eli
zach
derrick
kobe

积分: 以下$_POST['points']的结果

3
12
0
27
0
0
11
0
5
8
0
1

这些点与名称相符。

在我的代码中,我有一个foreach名称,运行一个包含每个名称的统计信息的块。该块具有玩家名称和捕获玩家得分的输入。

<li class="name">
<span><?php echo $player ?></span>
<input type="hidden" name="playername[]" value="<?php echo $player ?>" />
</li>

<li class="points">
<span>0</span>
<input type="hidden" name="points[]" value="0" />
</li>

因此,$_POST['playername']$_POST['points']的顺序相同。

如何更新包含点列和名称列的表?

 $player = $_POST['playername'];
 $points = $_POST['points'];

"UPDATE stats SET points = $points WHERE player = '$player'"

我需要运行一个foreach循环但是如果我执行与上面提到的foreach名称相同的循环,那么循环$player$points循环正确的次数但只有一个值。

所以我不确定如何在这里做array_combine或者如果我应该使用不同的方法我知道它很容易,但我无法弄明白。我很确定我需要循环$_POST变量,但我想我也需要将它们结合起来。我全都搞砸了,所以要弄清楚这只是把自己当作开发者,你需要更新{{ 1}}表以匹配正确的points

编辑: 感谢下面的海报,我现在可以更好地使用这两个阵列了。

但是为了扩展这个问题,当我使用变量来更新它不起作用的表时,这很奇怪。当我手动输入它时,它会player知道为什么它不能使用变量?

4 个答案:

答案 0 :(得分:1)

怎么样:

<?
  for( $i = 0; $i<count($player);$i++ ){
      $sql = "UPDATE stats SET points = $points[$i] WHERE player = '$player[$i]'";
      //execute sql here
  }
?>

答案 1 :(得分:1)

for( $i = 0; $i<count($_POST);$i++ ){
    $sql = 'UPDATE stats SET points = '.$_POST["points"][$i].' WHERE player = '.$_POST["playername"][$i];
    //execute sql
}

答案 2 :(得分:1)

$player = $_POST['playername'];
$points = $_POST['points'];

foreach($player as $key=>$value)
{
    $sql="UPDATE stats SET points = $points[$key] WHERE player = '".$value."'";// in place of $value you may also use $player[$key]
    mysql_query($sql);
}

答案 3 :(得分:1)

刚改变了Jorge代码位,

<?php

 $player = $_POST['playername'];
 $playerCount =count($_POST['playername']); // one time count check

 for( $i = 0; $i<$playerCount;$i++ ){
        $PlayerVal = trim($player[$i]); // empty value check
         if($PlayerVal!=""){
              $sql = "UPDATE stats SET points = "'.$points[$i]'" WHERE player = '".$player[$i]."' ";
           //execute sql here  
         }
   }
?>