PHP Mysql只在提交后插入

时间:2012-09-19 18:34:01

标签: php mysql html post pdo

我有2页。在用户在第1页上插入所有信息后,他们转到第2页。所有输入的信息都正确存储在$ _POST中,因此我可以在下一页中访问它。我也可以插入mysql数据库就好没问题。我试图做的事情就是只在第二页上点击提交按钮时执行插入数据库代码。我试过这样做:

使page2.php

<script>
$(document).ready(function(e) {
    $("#PaySubmit").click(function() {
        $.ajax({
            url: 'Insert.php'
        });
    });
});
</script>
<input type="submit" name="PaySubmit" id="PaySubmit" value="Continue"/>

Insert.php

try {
    $link = new PDO('mysql:host=****;dbname=****;charset=UTF-8','****','****');
    $first = $_POST["fname"];
    $last = $_POST["lname"];

    $stmt = $link -> prepare("INSERT INTO Conference (`First Name`, `Last Name`) VALUES (:first, :last)");
        $stmt->bindParam(':first', $first);
        $stmt->bindParam(':last', $last);
    $stmt->execute();

} catch(PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

问题是,当您在第二页上单击提交时,$ _POST将被第二页中的数据替换,因此我无法再访问第一页的数据。关于如何解决这个问题的任何想法?

3 个答案:

答案 0 :(得分:5)

将第一篇帖子中的所有值存储在当前的SESSION中。

然后,您可以使用$_SESSION全局访问它们。

看看serialize function,它可能会帮到你很多。或json_encode。它们对于将数组存储在一个变量中并稍后检索它非常有用。

答案 1 :(得分:0)

作为存储在会话中的替代方法,您可以通过使用隐藏输入字段将值从第一页传递到第二页。像这样:

foreach($_POST as $k => $v) {
?>
<input type="hidden" name="<?php echo $k; ?>" value="<?php echo $v; ?>" />
<?php
}

当然,您可能希望在发布到下一页之前以某种方式对帖子中的数据进行清理,但这应该可以让您知道该怎么做。

答案 2 :(得分:0)

我建议你将DBconnection作为单例类。转到第2页后调整查询,并在第2页中单击“提交”时执行该查询。