已经有一段时间了,因为我已经搞乱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
只是想知道是否有其他方式或更好的方法 感谢
答案 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();
}