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'");
}