我使用页面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;
}
?>
答案 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版本。