每次刷新PDO时都会继续插入数据

时间:2013-07-05 15:33:46

标签: php html pdo

我这里有这个代码。它成功地将数据插入到数据库中,但每次刷新浏览器时,我都会从浏览器“您正在查找您输入的使用信息的页面接收此消息。返回该页面可能会导致您重复执行任何操作。你想继续吗?“当我按下继续时,它会插入我插入的相同数据。谁能告诉我有什么问题?我刚开始学习PDO。

<?php
$host = "localhost";
$user = "root";
$db = "pdotest2";
$pass = "";

$dbase = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);

if(isset($_POST['firstname']))
{
$fname = $_POST['firstname'];
$lname = $_POST['lastname'];
$sql = "INSERT INTO tbldata(firstname, lastname) VALUES(:firstname, :lastname);";
$query = $dbase->prepare($sql);
$results = $query->execute(array(
    ':firstname' => $fname,
    ':lastname' => $lname
));
}
?>
<!DOCTYPE html>
<html>
<head>

</head>
<body>
<form action="" method="POST">
First Name: <input type="text" name="firstname" required>
<br>
Last Name: <input type="text" name="lastname" required>
<br>
<input type="submit" value="submit" name="submit">
</form>
<?php
    $query1 = $dbase->query("SELECT * FROM tbldata");
    echo "<table border=1 cellpadding=5>";
    while($row = $query1->fetch(PDO::FETCH_ASSOC)){
        echo "<tr>";
        echo "<td>" . $row['id'] . "</td>";
        echo "<td>" . $row['firstname'] . "</td>";
        echo "<td>" . $row['lastname'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
?>
    </body>
    </html>

我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

出现此消息是因为您填写了表单,然后点击了“提交”。在提交后您正在查看的该页面上,您点击了刷新按钮。浏览器在重新刷新时“重新提交”之前提交的内容是标准的。

如果您不希望“重新提交”,请输入网址并按Enter键。这样就没有提交数据。只有在您之后单击“提交”时,它才会发送更多数据并插入另一行。

一种简单的方法是只需点击地址栏(地址应该已存在),然后按Enter键。这将重新加载页面而不重新提交数据。