我有一个表单,它从用户那里获取输入,并在用户提交表单时将其存储在MySQL数据库中。
print_r('<form action="" method="post">');
/*
form data, input tags, etc
*/
if (isset($_POST['Submit']))
{
$sql = "INSERT INTO table
VALUES (...)";
$insert_form = $conn->query($sql);
}
print_r('</form>');
最初,用户在提交表单时仍留在页面上,一切正常。但是,我更新了网站,以便在提交表单后将用户带到新页面。上面代码的第一行现在看起来像这样:
print_r('<form action="next-page.php" method="post">');
我认为这不是一个重大变化,但现在每当我尝试提交表单时,我都会被带到下一页,而不会插入数据库。当我删除表单操作时,insert命令有效,当我把它重新放入时,它没有。
知道为什么会出现这个问题吗?
我找到了使用php标头函数的解决方法:
if ($insert_form)
header('Location: next-page.php');
..但感觉有点草率。对此有何评论?
答案 0 :(得分:1)
您可以删除if语句;在$ insert_form之后插入下一行。
$sql = "INSERT INTO table
VALUES (...)";
$insert_form = $conn->query($sql);
header("location: next-page.php");
答案 1 :(得分:0)
print_r
主要用于打印array
。如果你想在php echo
里面写你的html,你就可以轻松完成工作。通常情况下,表单会将数据提交给当前页面如果没有设置或没有设置action
。如果有action
,则表单value
将显示您在其上设置的下一个php
文件action
并且不会处理当前页面中的任何内容。
echo'<form action="" method="post">';
/*
form data, input tags, etc
*/
echo'</form>';
if (isset($_POST['Submit']))
{
$sql = "INSERT INTO table
VALUES (...)";
$insert_form = $conn->query($sql);
header("location: next.php");
}