Php 基于用户操作更新表
我正在尝试根据用户操作更新表。请帮助,当我提交查询时,如果用户选择“编辑”,则不会发生任何情况。我应该更新表。我做错了什么Php 基于用户操作更新表,php,Php,我正在尝试根据用户操作更新表。请帮助,当我提交查询时,如果用户选择“编辑”,则不会发生任何情况。我应该更新表。我做错了什么 if ($action == "edit"){ $edit = $_POST['edit']; $first_name = $_POST['first_name']; $last_name = $_POST['last_name']; $email = $_POST['email']; $sql=mysql_query("select * from user whe
if ($action == "edit"){
$edit = $_POST['edit'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$sql=mysql_query("select * from user where id='$id'");
while ($row=mysql_fetch_array($sql))
{
$id = $row['id'];
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$email = $row['email'];
$result=mysql_query("UPDATE user SET first_name='$first_name',last_name='$last_name',email='$email' WHERE id='$id'");
echo("<form name='edit' method='post' action='?action=edit'>");
echo("<input type='hidden' name='?action=edit'>");
echo("<table class=main cellspacing=0 cellpadding=5 >");
echo("<tr><td>Name: </td><td align='right'><input type='text' name='first_name' value='$first_name'></td></tr>");
echo("<tr><td>Surname: </td><td align='right'><input type='text' name='last_name' value='$last_name'></td></tr>");
echo("<tr><td>Email: </td><td align='right'><input type='text' name='email' value='$email'></td></tr>");
echo("<tr><td></td><td><div align='right'><input type='submit'></div></td></tr>");
echo("</table>");
}
}
if($action==“edit”){
$edit=$_POST['edit'];
$first\u name=$\u POST['first\u name'];
$last_name=$_POST['last_name'];
$email=$_POST['email'];
$sql=mysql_查询(“从用户中选择*,其中id='$id');
while($row=mysql\u fetch\u数组($sql))
{
$id=$row['id'];
$first_name=$row['first_name'];
$last_name=$row['last_name'];
$email=$row['email'];
$result=mysql_query(“更新用户集first_name='$first_name',last_name='$last_name',email='$email'其中id='$id');
回声(“”);
回声(“”);
回声(“”);
回声(“名字:”);
埃科(“姓:”);
回音(“电子邮件:”);
回声(“”);
回声(“”);
}
}
您正在使用正在获取的结果更新数据库
您需要在选择行之前更新数据库:
两个注意事项:您没有在表单中设置id
(可能将其设置为隐藏输入)。我看到的最大问题是,您最初没有设置ID(即当没有$u POST数据时)
另外,您应该使用或
if($\u POST){
$id=$_POST['id'];
$edit=$_POST['edit'];
$first\u name=$\u POST['first\u name'];
$last_name=$_POST['last_name'];
$email=$_POST['email'];
$result=mysql_query(“更新用户集first_name='$first_name',last_name='$last_name',email='$email'其中id='$id');
}
$sql=mysql_查询(“从用户中选择*,其中id='$id');
而($row=mysql\u fetch\u数组($sql)){
$id=$row['id'];
$first_name=$row['first_name'];
$last_name=$row['last_name'];
$email=$row['email'];
回声(“”);
回声(“”);
回声(“”);
回声(“名字:”);
埃科(“姓:”);
回音(“电子邮件:”);
回声(“”);
回声(“”);
}
您应该检查表单是否由用户发送
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id = $_POST['id'];
$edit = $_POST['edit'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$result=mysql_query("UPDATE user SET first_name='$first_name',last_name='$last_name',email='$email' WHERE id='$id'");
}
还要检查您的安全性,使用mysql\u real\u escape\u字符串
此外,您还可以扩大检查范围,检查是否按下了提交按钮等。1。您在哪里设置$action 2。在眼睛上重复所有html是不好的,你从哪里得到
$id
?$id
在第一个查询运行之前没有设置,所以第二个查询没有运行。我有一个链接,如果单击此链接,它将检查$action==edit,然后更新表。。。但是它不更新我有一个r ref,它将检查$action==edit,这就是为什么我在代码的顶部放置一个if($action==edit){。。。
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id = $_POST['id'];
$edit = $_POST['edit'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$result=mysql_query("UPDATE user SET first_name='$first_name',last_name='$last_name',email='$email' WHERE id='$id'");
}