2013-02-07 61 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