1

自从我弄乱 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

只是想知道是否有另一种方法或更好的方法谢谢

4

3 回答 3

2

将变量放入数组中:

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

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

注意:您的代码容易受到 SQL 注入攻击。我强烈建议您阅读mysqliprepared statements等:

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

mysql 接口已正式弃用,不应再使用。

于 2013-02-07T20:11:22.913 回答
-1

'mnpoints' 和 'inpoints' 等...与“分数”有什么关系?如果您只是想转储所有这些值并将它们加在一起,那么:

$score = $mn + $mi  + $in +  $wi;
$sql = "UPDATE ... SET score=score+$score";
于 2013-02-07T20:10:30.557 回答
-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();       
}
于 2013-02-07T20:11:29.540 回答