如果用户单击编辑链接,则更新表

时间:2013-05-18 10:14:44

标签: php

我试图让我的查询在用户点击时更新 这一个在这里工作,但它不想更新我说查询空

我编写了如下代码

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

2 个答案:

答案 0 :(得分:1)

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

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

通过PHP捕捉它:

$id = $_POST['id'];

或者让它按原样使用并将其作为GET变量捕获:

$id = $_GET['id'];

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

答案 1 :(得分: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>");