2017-02-09 130 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以及准备好的语句。

参考文献: