[英]PHP/HTML Form not updating MySQL
我似乎无法找到解决方案,我也一直在寻找类似的线程,但没有运气
基本上这是我的代码,当您单击“更新”时,它旨在在表单字段中显示您的当前名称,然后您可以覆盖它们并提交更改,但是遗憾的是它不会更新,它仅显示原始设置的名字和姓氏,并且不更新数据库,因此不显示新的集合名称。
<?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>
任何帮助将不胜感激 :)
亲切的问候
〜马特
我在查询中看到一些错误
$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'])){
您必须先连接到数据库,然后才能使用。
$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'
末尾有错误,这是错误的
您在if条件中使用$POST
错误。
它必须称为$_POST[..]
。
另外,您还应该在更新查询中查看WHERE
。
我认为您的意思是: WHERE id= '$id'
您应该从$ _POST ['id']获取您的ID; 我想这是您的行ID,更新查询也必须在id = $ id的地方。
$id = $_POST['id'];
$sql = "UPDATE users SET first_name='$newFirst', last_name='$newLast' WHERE id=$id";
您还更新过数据库吗? 在发生更新之前,在选择期间使用的row [0],row [1],row [2]将具有旧的一组值。 您可以在更新调用后使用mysqli_fetch_array($ res)吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.