2013-02-16 51 views
0

我構建表單數據的方式是通過在while循環中創建它們,但每次創建表單時都會使用唯一的ID。 所以我的問題是,我如何分別訪問它們並將指定的數據更新到MYSQL服務器。 我已經嘗試做在腳本結束的代碼,但我不知道如何訪問單獨如何使用多個表單提交唯一數據PHP/MySQL

<?php 
     include 'user_data.php'; 
     include 'core.inc.php'; 

     $query = mysql_query("SELECT `post_text` FROM `posts`,`sub_posts` WHERE sub_posts.post_id = posts.id AND    sub_posts.user_id='$user_id'"); 

     while($row = mysql_fetch_array($query)){ 

      ?><a href="#" class="askedClick"><?php echo $row[post_text].'<br>'?></a> 

      <form action="<?php $curent_file ?>" method="POST"> 
      <textarea name="answer_field" > </textarea><br /> 
      <input type="submit" value="Submit Answer"> 
      <input type="hidden" name="post_id" value="<?php echo $row['post_id']; ?>" /> 
     </form> 

    <?php 
     }//While Loop 
    if (isset($_POST['answer_field']) && !empty($_POST['answer_field'])){ 
     $answer = mysql_real_escape_string($_POST['answer_field']); 
     $id = intval($_POST ['post_id']); 
     $query = "UPDATE `sub_posts` SET `sub_answer`='$answer' WHERE `post_id`='$id'"; 
    } 


?> 
+0

請勿混淆'$ _POST ['answer']'和'$ _POST ['answer_field']'。兩者必須具有相同的名稱,因爲你指的是同一件事。 – 2013-02-16 01:02:59

+0

這裏if條件是否正確?似乎沒有更新到服務器 – 2013-02-16 01:06:50

+0

是的。你可能希望通過將創建的SQL查詢傳遞給mysql_query來實際_execute_);由於$ id變量保證是一個數字,因此查詢中不需要引號。 – 2013-02-16 01:09:42

回答

2

只有一個單一的形式獲取點擊「提交」時張貼的形式現場。表單名稱不會自行提交。相反,你會放置到表單對應的隱藏字段的帖子ID:

<input type="hidden" name="post_id" value="<?php echo $row['post_id']; ?>" /> 

再後來:

$answer = mysql_real_escape_string ($_POST ['answer']); 
$id = intval ($_POST ['post_id']); 
$query = "UPDATE `sub_posts` SET `sub_answer`='{$answer}' WHERE `post_id`={$id}"; 

請注意,你肯定需要把它在之前逃離答案查詢並確保該ID是一個數字。否則,你打開你的代碼到SQL注入攻擊。

+0

我感謝幫助,我現在要去實現它,現在它應該是絕對的工作。 $ id = intval($ _POST ['post_id']);代碼中的「intval」是什麼? – 2013-02-16 00:57:47

+0

「intval」函數將傳遞給它的參數轉換爲整數(名稱代表「整數值」,檢出[docs](http://www.php.net/manual/en/function.intval)。如果你不這樣做,有人可以編輯你的表單並將其更改爲'-1 OR 1 = 1',那麼你的查詢的where子句將是:「WHERE post_id = -1 OR 1 = 1」,其中總是如此,更新表中的每一個record_。 – 2013-02-16 01:01:08

相關問題