PHP / HTML表单不更新MySQL

时间:2014-02-05 12:48:09

标签: php html mysql mysqli

我似乎无法找到解决方案,我也寻找类似的线程,但没有运气

基本上这是我的代码,当你点击更新它意味着在表单字段中显示你当前的名字然后你可以覆盖它们并提交更改,但遗憾的是它不会更新,它只显示最初设置的名字和最后名称并且不更新数据库,因此不显示新的集名称。

<?php 
include('../connect_db.php'); 

$res = mysqli_query($dbconnection, "SELECT * FROM users");
$row = mysqli_fetch_array($res);


if(isset($_POST['newFirst']) && isset($_POST['newLast'])){
    $newFirst = $_POST['newFirst'];
    $newLast = $_POST['newLast'];
    $id = $_POST['id'];
    $sql = "UPDATE users SET first_name='$newFirst', last_name='$newLast' WHERE id='$id'";
    $res = mysqli_query($dbconnection, $sql);
}

?>

<div id="editSection">
<h3>Edit Details</h3>   

<form action="edit_profile.php" method="POST">

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

<h2>First Name</h2>
<input type="text" name="newFirst" value="<?php echo $row[1];?>">

<h2>Last Name</h2>
<input type="text" name="newLast" value="<?php echo $row[2];?>">

<input type="submit" value="Update">

</form>


</div>

非常感谢任何帮助:)

亲切的问候

〜马特

4 个答案:

答案 0 :(得分:0)

我在查询中看到一些错误

$sql = "UPDATE users SET first_name='$newFirst', 
last_name='$newLast' WHERE id='first_name='$id'";

应该是

$sql = "UPDATE users SET first_name='$newFirst', 
last_name='$newLast' WHERE id= '$id'";

if(isset($POST['newFirst']) && isset($POST['newLast'])){

应该是

if(isset($_POST['newFirst']) && isset($_POST['newLast'])){

答案 1 :(得分:0)

您必须在更新前连接到数据库。使用

$con=mysqli_connect("localhost","my_user","my_password","my_db"); 

还有其他一些错误,例如你必须$POST['newFirst'] $_POST['newFirst']这样

if(isset($_POST['newFirst']) && isset($_POST['newLast'])){

将查询更改为

$sql = "UPDATE users SET first_name='$newFirst',last_name='$newLast' WHERE id= '$id'";

因为您在查询id='first_name='$id'末尾有错误

答案 2 :(得分:0)

您在if条件中使用了$POST错误。

必须将其称为$_POST[..]

另外,您应该查看更新查询中的WHERE

我认为你的意思是:WHERE id= '$id'

答案 3 :(得分:0)

你应该从$ _POST ['id']获取你的身份证明;这是你想要的行ID,更新查询也必须是id = $ id。

$id = $_POST['id'];
$sql = "UPDATE users SET first_name='$newFirst', last_name='$newLast' WHERE id=$id";

更新后你还检查了数据库吗?在更新发生之前,使用的行[0],行[1],行[2]将具有在选择期间使用的旧值集。你可以在更新电话后获得mysqli_fetch_array($ res)吗?