2017-02-09 125 views
2

我有一個窗體,其中包含一些從數據庫加載數據的文本框。我還創建了一個按鈕,我可以更新數據,但目前它不工作,我不知道爲什麼。使用POST方法更新mysql表

這裏是我的查詢:

<?php 
include('connect.php'); 

if (isset($_POST['btnUpdate'])){ 

    $query = "UPDATE users SET fname = '".$_POST['fname']."', lname = '".$_POST['lname']."' WHERE user_id = '".$_POST['id']."'"; 
    $result = mysql_query($query); 
    if ($result) { 
     die("<strong>Updated</strong>"); 
    } else { 
     die("<strong>Error ".mysql_error()."</strong>"); 
    } 
} 
?> 

這裏是我的形式:

<form class="form-horizontal" role="form" action="" method="post"> 
<input type="hidden" name="id" value="<?php echo $row['user_id']; ?>"/> 
    <div class="form-group"> 
    <label class="col-lg-3 control-label">First name:</label> 
    <div class="col-lg-8"> 
    <input class="form-control" name="fname" type="text" value="<?php echo $row['fname'];?>"> 
    </div> 

    <label class="col-lg-3 control-label">Last name:</label> 
    <div class="col-lg-8"> 
    <input class="form-control" name="lname" type="text" value="<?php echo $row['lname'];?>"> 
    </div> 

<label class="col-md-3 control-label"></label> 
<div class="col-md-8" > 
<input type="button" name="btnUpdate" class="btn btn-primary" value="Save Changes"> 
<span></span> 
<input type="reset" class="btn btn-default" value="Cancel"> 
</div> 
</div> 
</form> 

我用盡了一切辦法,但它不會更新我的數據庫。當我在瀏覽器上檢查它時,它沒有任何錯誤。我正在用盡想法。任何人都知道我的代碼的哪一部分是錯的?我仍然是PHP的初學者,我似乎無法理解這裏出了什麼問題。任何想法如何解決這個問題將不勝感激。謝謝

+2

爲'$ _ POST [ '身份證']屬性'是哪兒?有一個簡單的方法來做到這一點btw –

+0

*「任何想法如何解決這個問題」* - 答:隱藏輸入。 '」>'。好的人,沒有別的在這裏看到;-) –

+0

也請注意有人可能會對您的數據庫造成嚴重損壞,並且您使用的是過時的MySQL API。考慮使用[參數化](http://bobby-tables.com/php) –

回答

3

作爲社區維基發佈;我覺得沒有代表應該來。

<input type="button">默認情況下不傳播POST。因此,您需要使用「提交」類型:

要麼是<input type="submit">要麼是<button type="submit">

參考文獻:

類型
的類型的按鈕的。可能的值有:

  • 提交:按鈕將表單數據提交給服務器。如果未指定屬性,或者屬性動態更改爲空值或無效值,則這是默認值。
  • 重置:該按鈕將所有控件重置爲其初始值。
  • button:該按鈕沒有默認行爲。它可以將客戶端腳本與元素的事件相關聯,這些事件在事件發生時觸發。

如果您的網站正在運行或打算上線,您也可以接受嚴重的SQL注入。

您應該開始考慮切換到mysqli_或PDO API以及準備好的語句。

參考文獻: