PHP - MySQL INSERT查询不适用于表单操作

时间:2015-11-04 02:15:22

标签: php html mysql forms

我有一个表单,它从用户那里获取输入,并在用户提交表单时将其存储在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');

..但感觉有点草率。对此有何评论?

2 个答案:

答案 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");

 }