3

我有 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"/>

插入.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 会被第二页中的数据替换,因此我不再有权访问第一页的数据。关于如何解决这个问题的任何想法?

4

3 回答 3

5

将第一篇文章中的所有值存储在当前会话中。

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

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

于 2012-09-19T18:35:38.610 回答
0

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

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

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

于 2012-09-19T18:38:52.947 回答
0

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

于 2012-09-19T18:38:53.223 回答