2014-08-31 58 views
0

我有一個表單發佈與特定行有關的2個字段的數據。根據誰在使用它,表單的行數可能會有所不同。但是它不更新表格的任何部分。如果我把while循環取出,它只會更新最後一行。有關如何修復它的任何建議?foreach的問題

foreach($_POST as $k=>$p){ ${$k}=$p; } 

if (isset($_POST['Update'])) { 
     $result = mysql_query("SELECT id, rank FROM accounts WHERE tag='$tag'"); 
     while ($row = mysql_fetch_assoc($result)) { 

     //Set Variables 
     $query = "UPDATE accounts SET rank=$rank WHERE id=$m_id"; 
     mysql_query($query); 

} 
} 
+1

我相信你應該把這個如果{...}部分在foreach中?它只執行一次。 – 2014-08-31 09:33:21

+0

您的更新不在循環中。只會有一個更新。你必須以某種方式循環回答。您應該發佈您提交的表單。 – 2014-08-31 09:34:53

+1

如果您不熟悉PHP和MYSQL,請閱讀[文檔](http://php.net/manual/en/function.mysql-query.php)頂部的紅框。這些功能不應再使用。此外,您應該使用準備好的語句,而不是在查詢字符串中擴展變量。 – 2014-08-31 09:42:30

回答

0

你可以簡單地這樣做:

if (isset($_POST['Update'])) { 
     $result = mysql_query("UPDATE accounts SET rank=".$_POST['rank']." WHERE tag='".$_POST['tag']."'"); 
     mysql_query($query); 

} 

更好的讀取MySQL和PHP正常。

+0

這不起作用,因爲它沒有考慮到特定賬戶的不同等級。即使對此進行調整也不會正確更新行。 – user3830607 2014-08-31 11:17:50

+0

你在這裏試圖做什麼$ result = mysql_query(「SELECT id,rank FROM accounts WHERE tag ='$ tag'」); – 2014-08-31 11:19:47

+0

如果確實有效,它只會將具有相同標記的所有帳戶更新爲相同的排名。在表單中,您可以使用相同的$標記m_id = 1 && rank = 2,m_id = 2 && rank = 1。它需要能夠根據您想要更新的內容,從選項 – user3830607 2014-08-31 11:22:37