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的主要内容,如果未能解决你的问题,请参考以下文章