0

我试图让我的查询在用户单击时更新

我编辑代码如下

  if ($action == "edit"){
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 



    $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");
     $sql = mysql_query($result) or die (mysql_error());
}

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


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


echo("<br>");                                                                                                                                                                                                                                                                                                               
echo("</form>");

我添加了$sql = mysql_query($result) or die (mysql_error());

上面的行显示了查询在执行时遇到的错误时间......关于为什么查询为空以及表中哪里有数据的任何想法?

此代码将在单击此链接后运行

echo"<a href='test.php?action=edit&id=$id'>Edit</a>";
4

2 回答 2

1

你没有抓住id. 正如您在 URL 中所写的那样,它是通过 GET 传输的,其余数据是通过 POST 传输的。所以你要么必须作为 POST var 传输:

<input type="hidden" name="id" value="$id"/>

并通过 PHP 捕获它:

$id = $_POST['id'];

或者让它保持原样并将其作为 GET 变量捕获:

$id = $_GET['id'];

但是:这段代码非常不安全。我建议你搜索sql injection和类似的主题..

于 2013-05-18T10:19:17.810 回答
0
if (isset($_POST["hdn_edit"]) && $_POST["hdn_edit"]=="edit")
{
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$id=$_POST["hdn_id"];
$result=mysql_query("UPDATE user SET first_name='$first_name',last_name='$last_name',email='$email' WHERE id=$id");   
}
$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'];
echo("<form name='edit' method='post' action=''>");
echo("<input type='hidden' name='hdn_edit' value='edit'>");
echo("<input type='hidden' name='hdn_id' value='$id'>");
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>");
}
 echo("<br>");                                                                                                                                                                                                                                                                                                               
 echo("</form>");
于 2013-05-18T11:37:13.510 回答