2013-04-17 147 views
19

我想在一個表中的所有行中更新一個相同的列可以有人給我如何更新表?只有一個輸入字段應更新所有行值。這段代碼不工作,我知道索引和數組有問題。更新表中所有行的一列

<?php 
    <form method="post" dir="rtl" name="maxcharfield" >      
     <textarea onKeyDown="textCounter(this,'progressbar1',300)" 
      onKeyUp="textCounter(this,'progressbar1',300)" 
      onFocus="textCounter(this,'progressbar1',300)" 
      style="font-family:'B_yekan';" id="text" name="text" rows="0" cols="0" class="required"></textarea> 
     <div class="cleaner h10"></div> 

     <div style="font-family:'B_yekan';" dir="rtl" id="progressbar1" class="progress" ></div> 
     <script>textCounter(document.getElementById("maxcharfield"),"progressbar1",100)</script>  

     <input class="styled-button-8" style="margin-top:10px; float:right; margin-right:50px; font-size: 14px; padding: 5px 14px;" type="submit" value="save" name="Submit" /> 
     <input style="font-family:'B_yekan';" type="reset" value="reset" id="reset" name="reset" class="submit_btn float_l" /> 

    </form> 

<?php 
// for updating Check if button name "Submit" is active, do this 
if(isset($_POST['Submit']) && $_POST['Submit'] == 'save') 
    { 
     $sql1="UPDATE `".$tbl_name."` SET `board`='".$_REQUEST['text']."' "; 
          $result1=mysql_query($sql1); 
    } 

    } 
?> 

回答

43

您的解決方案過於複雜。爲了更新每條記錄,您試圖採取的方法是:

  1. 選擇所有記錄。
  2. 獲取每條記錄的ID。
  3. 循環播放ID。
  4. 用該ID更新每條記錄。

UPDATE語法有一個更簡單的方法來做到這一點。您無需爲UPDATE聲明提供WHERE子句。如果沒有該條款,默認情況下將更新每條記錄表:

UPDATE TableName SET `board`='value' 

此外,請注意,你必須在你的代碼中的漏洞SQL injection。通過在您的SQL查詢中直接使用 $_REQUEST['text'],您允許任何用戶向您的查詢發送SQL代碼。然後你的代碼執行他們發送的任何內容。這可能會讓他們破壞或刪除您的數據,甚至可以獲得對您服務器的管理訪問權限。

對於初學者,請停止使用mysql_*函數。 PHP已經棄用這些,他們不應該再使用。他們有a mysqli_ replacement。除此之外,在使用SQL查詢之前,使用the mysqli_real_escape_string() function來清理您的輸入。最後,使用prepared statements而不是將值直接連接到您的SQL字符串中。

+0

謝謝我做了你說的,但我仍然不能更新 –

+0

@mohamad:你能用新代碼更新原始問題嗎?任何數量的東西都可能是錯誤的。 – David

+0

我已經更新了 –