0

我在 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

4 回答 4

0

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

请注意一件事,不要将任何输出放在标头之前的标准输出。

于 2012-06-26T23:44:22.780 回答
0

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

于 2012-06-26T23:36:22.103 回答
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 函数。

于 2012-06-26T23:54:14.547 回答
0

您不能在header函数 ( <? echo $row['ID]; ?>) 中嵌入 php 代码。为了实现你想要做的事情,你应该INSERT在 header 函数之前有代码。然后您应该检索您刚刚输入的联系人的 ID,然后调用 header 函数,如下所示(假设$id是检索到的 ID):

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

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

于 2012-06-26T23:55:58.687 回答