2014-02-28 71 views
0

我試圖創建一個顯示多個用戶數據的表。表格中的數據將能夠被編輯和更新。下面是形式佈局方式的例子:在PHP的foreach循環中使用更新SQL查詢

echo "<form action=AdminUpdateLecInfo.php method=post>"; 
    while ($return = mysql_fetch_assoc($result)) { 
    $phonenumber = "$return[PhoneNumber]"; 
    $number = str_pad($phonenumber, 11, "0", STR_PAD_LEFT); 
    echo " <tr class='data'> 
      <input type='hidden' name='id'".$return['ID']."'' value= '".$return['ID']."' /> 
      <td class = 'title'><input class = 'title' type='text' name='title'".$return['ID']."'' value= '".$return['Title']."' /></td> 
    } 
    echo "</table> 
    <input class='submit' type='submit' value='Update Info' /> 
    </form> 

一旦表創建傳遞給「update.php」腳本的信息。

$sql="UPDATE completeinfo SET Title='".$_POST['title'][$return['ID']]."'  
          WHERE ID = '".$_POST['id'][$return['ID']]."'"; 
          header("Location:Home.html"); 

我遇到的問題是,我需要添加「‘$返回[‘ID’。’」每個輸入字段的名稱,以便並非所有用戶的詳細信息與更新相同的值。我不確定是否需要對此查詢應用foreach循環,以便它適用於每個用戶並更新其詳細信息。但是目前,更新查詢不能正常工作,因爲post方法沒有正確地從表單中獲取值。請隨身攜帶,因爲我確信你可以告訴PHP對我來說是非常新的。 感謝您的幫助。

+1

請你寫** **任何更多的SQL接口的代碼之前,你必須在[適當讀了SQL轉義](http://bobby-tables.com/php),以避免嚴重的[SQL注入漏洞](http://bobby-tables.com/)。另外,'mysql_query'不應該在新的應用程序中使用。這是從PHP的未來版本中刪除的不推薦使用的界面。像[PDO這樣的現代化替代品並不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。像[PHP正確的方式](http://www.phptherightway.com/)這樣的指南將幫助您避免出現這樣的錯誤。 – tadman

回答

0

你的問題是你的字段的名稱,使用:

$return_id = $return['ID']; 

echo " 
<tr class='data'> 
    <td class = 'title'> 
     <input type='hidden' name='id$return_id' value='$return_id' /> 
     <input class='title' type='text' name='title$return_id' value='$return_id' /> 
    </td> 
</tr>"; 

做你的mysql更新之前,做var_dump($_POST);,你將被示的HTTP POST參數的內容,所以你可以看到他們是以及如何在查詢中使用它們。

0

你必須使用你的文本字段的名稱爲數組,所以你可以遍歷您的陣列

name='title'".$return['ID']."' 
name='id'".$return['ID']."'