2013-02-07 62 views
1

数据它已经一段时间,因为我与混乱的循环,并想知道如果这是可能的一部分循环: 以下是我有:

$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

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。 – Kermit

+0

'死亡'不是一个有效的方法。除非你有非常好的理由,否则请不要使用'mysql_query'。它正在退休,因为它非常危险。 – tadman

回答

-1

怎么做的mnpoints'和“inpoints “等等涉及到‘分数’如果你只是看着倾销所有这些值和增加他们togetherm,则:

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

它是从表单中提取数据,然后将值存储在$ mn $ mi $中等。 – ondrovic

2

把你的变量到一个数组:

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

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

注意:您的代码易受SQL注入攻击。我强烈建议你在mysqli的准备语句等:

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

MySQL的接口是正式弃用,不应再使用读了。

+1

或者对数组使用foreach vs –

+0

是的,好点。 –

+0

感谢真正新到PHP和SQL会看看,并给它一个感谢输入 – ondrovic

-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();  
} 
+0

如果你不能被困扰[妥善逃避你的SQL](http://bobby-tables.com/php)这个不是一个有效的答案。 – tadman