PHP/HTML 表单不更新 MySQL

Posted

技术标签:

【中文标题】PHP/HTML 表单不更新 MySQL【英文标题】:PHP/HTML Form not updating MySQL 【发布时间】:2014-03-01 21:56:14 【问题描述】:

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

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

<?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>

任何帮助将不胜感激:)

亲切的问候

~马特

【问题讨论】:

请不要根据答案编辑代码,这会使它们毫无用处。而是接受对您有帮助的答案。 @MarcelBalzer 它不允许我再次发布仍然导致它无法工作的更改,所以我出于这个原因更新了它 OK 然后尝试查看 mysqli_error() 或 mysqli_errno() 的返回值 【参考方案1】:

我在查询中看到一些错误

$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']))

【讨论】:

谢谢,我刚刚更新了帖子的更改,我仍然有问题,知道吗? 试试 if (!$res) printf("Errormessage: %s\n", mysqli_error($dbconnection)); ,这将告诉您查询中是否有错误。 只做 print_r($_POST) ;在 edit_profile.php 中,看看你在 if 条件之前得到了什么。 Array ( [id] => 1 [newFirst] => Bob [newLast] => Artiman ) 警告:mysqli_error() 只需要 1 个参数,0 在 /home/solunaga/public_html/bananastaff 中给出/sections/edit_profile.php 第 18 行 在页面顶部使用全局 $dbconnection ;在包含('../connect_db.php')之后;你的连接字符串在这里不可用,所以问题是。确保您在路径中包含正确的文件。【参考方案2】:

你必须在更新之前连接到数据库。所以使用

$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' 这是错误的

【讨论】:

谢谢你,刚刚更新了它,但我在更新它时仍然遇到问题,连接在顶部的包含中,以节省每次都必须重写它。它肯定是连接的,因为它将当前名称拉入输入值 尝试打印$res 并查看它显示的内容。如果它显示 0 则说明您的查询有问题,否则我们需要检查 php 编码 我做了一个 print_r,我得到了“mysqli_result Object ()” 也可以试试mysqli_query($dbconnection, $sql) or die(mysqli_error()) 而不是mysqli_query($dbconnection, $sql) edit_profile.php 包含html内容和php内容的同一页面【参考方案3】:

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

必须叫$_POST[..]

您还应该在更新查询中查看您的WHERE

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

【讨论】:

谢谢!我刚刚编辑了帖子的更改,但我仍然遇到问题,知道吗?【参考方案4】:

你应该从 $_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) 吗?

【讨论】:

谢谢!我刚刚编辑了帖子的更改,但我仍然遇到问题,知道吗? id='$id' 应该是 id=$id 希望对你有帮助 matthew,更新后你签入数据库了吗?使用的 row[0]、row[1]、row[2] 将在更新发生之前在选择期间使用旧值集。更新调用后你能有 mysqli_fetch_array($res) 吗?

以上是关于PHP/HTML 表单不更新 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ajax、PHP、MYSQL 更新表单

我有一种形式可以更新mysql中的某些值,当输入为空时,如何避免更新单元格?

laravel mysql数据库同一页面多表单提交表不更新

php表单mysql更新保存数据

不使用表单中的空字段更新数据库

mysql 从表单错误更新