在PHP中使用头函数

时间:2012-06-26 23:30:54

标签: php mysql

我使用页面add.php上的表单向我的数据库添加联系人,此表单的INSERT代码位于另一个页面上,我们将调用php.php页面。在php.php我有一个标题函数,我想将用户重定向到另一个页面edit.php?ID = 100,ID = 100是刚刚输入的联系人。我该怎么做,我需要在头函数和INSERT查询之前从数据库中获取吗?

<?php

if (isset($_POST['$fname'])) {

  header("location: http://www.mydomain.com/contacts/edit/?ID=<? echo $row['ID]; ?>");

  $connect = mysql_connect (...)

  mysql_select_db ("mydb);

  $ID = $_POST['ID'];
  $fname = $_POST['fname'];
  $lname = $_POST['lname'];

  $sql = ("INSERT INTO contacts (fname, lname) VALUES ('$_POST[fname]', '$_POST[lname]')");

  mysql_query($sql,$con) or die ("Error: ".mysql_error());

  exit;
}

?>

4 个答案:

答案 0 :(得分:0)

您需要在当前脚本完成所有您想要的操作后发送标题。发送标头不一定会立即取消该脚本的执行;它仍然可以持续一段时间,但是你应该在进行SQL调用后继续。

答案 1 :(得分:0)

标头不会终止脚本的运行。 如果您使用位置重定向是退出脚本的好习惯,那么您所做的更正。

请注意一点,不要在标题之前将任何输出放到标准输出中。

答案 2 :(得分:0)

我相信mysql_insert_id是您正在寻找的功能。它将返回刚刚插入的字段的AUTO_INCREMENT ID。然后,您可以将其插入标题重定向。只需确保在插入联系人后重定向标题。它会工作得很好。

应该有效的代码:

<?php

if (isset($_POST['$fname'])) {

$connect = mysql_connect (...)

mysql_select_db ("mydb");

$ID = $_POST['ID'];
$fname = mysql_real_escape_string($_POST['fname']);
$lname = mysql_real_escape_string($_POST['lname']);

$sql = "INSERT INTO contacts (fname, lname) VALUES ('$fname', '$lname')";

mysql_query($sql,$connection) or die ("Error: ".mysql_error());

header("location: http://www.mydomain.com/contacts/edit/?ID=".mysql_insert_id($connection));

exit;
}

?>

您发布的代码也容易受到MySQL注入,因此我对您的输入进行了mysql_real_escape_string,以防止这种情况发生。在将输入放入查询之前始终清理输入。我鼓励您查看PHP提供的MySQLi函数。

答案 3 :(得分:0)

您无法在header函数(<? echo $row['ID]; ?>)中嵌入php代码。要实现您要执行的操作,您应该在头函数之前使用INSERT代码。然后你应该检索你刚刚输入的联系人的ID,然后调用头函数,就像这样(假设$id是检索到的ID):

header("location: http://www.mydomain.com/contacts/edit/?ID=".$id);

要检索上一个插入行的ID,可以使用mysql_insert_id函数(reference),但建议您使用mysqli版本。