从$ _POST获取部分数据时进行循环

时间:2013-02-07 20:07:49

标签: php mysql loops for-loop

已经有一段时间了,因为我已经搞乱for循环并且想知道这是否可能: 这就是我所拥有的:

$mn = $_POST['mnpoints'];                   
$mi = $_POST['mipoints'];
$in = $_POST['inpoints'];
$wi = $_POST['wipoints'];

单击提交按钮后,从表单中获取这些数字,将使用以下代码更新MySQL数据库

for ($i = 0; $i <=4; $i++ )
{
  mysql_query("UPDATE " . $db_table . " SET `score` = `score` + <VARIABLE HERE> WHERE id=$i") or die (mysql_error());
}

实现这一目标的最佳方法是什么?我总是可以将变量更改为$ m1 - $ m4,只需使用$ m $ i

只是想知道是否有其他方式或更好的方法 感谢

3 个答案:

答案 0 :(得分:2)

将变量放入数组中:

$values = array($mn, $mi, $in, $wi);

然后使用foreach对其进行迭代,或使用$i对其进行索引。

注意:您的代码容易受到SQL注入攻击。我强烈建议你阅读 mysqli 准备好的陈述等。:

http://php.net/manual/en/book.mysqli.php

mysql界面正式已弃用,不应再使用了。

答案 1 :(得分:-1)

'mnpoints'和'inpoints'等如何与“得分”相关?如果你只是想要倾倒所有这些值并将它们加在一起,那么:

$score = $mn + $mi  + $in +  $wi;
$sql = "UPDATE ... SET score=score+$score";

答案 2 :(得分:-2)

function bulkUpdateSingleColumn($table, $id_column, $update_column, array &$idstovals){
    $sql = "update $table set $update_column = CASE $id_column ";
    foreach($idstovals as $id=>$val){
        $sql .= " WHEN '$id' THEN '$val' \n";
    }
    $sql .= " END
    WHERE $id_column in (" . implode(',', array_keys($idstovals)) . ")";
//debugging info
    echo '<small>'.$sql.'</small>';
    $idstovals=array();       
    db_query($sql);      
    done();       
}