1

ここにこのコードがあります。データベースにデータを正常に挿入しますが、ブラウザーを更新するたびに、ブラウザーから次のメッセージが表示されます。続ける?" 続行を押すと、挿入したのと同じデータが挿入されます。誰が何が悪いのか教えてもらえますか?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>

あらゆる助けをいただければ幸いです。

4

1 に答える 1

2

このメッセージは、フォームに入力して [送信] をクリックしたために表示されます。送信後に表示しているそのページで、更新ボタンを押します。更新を押したときに、以前に送信したものをブラウザが「再送信」するのは標準です。

「再送信」しない場合は、URL を入力して Enter キーを押します。そうすれば、提出データはありません。その後送信をクリックした場合にのみ、さらにデータを送信し、別の行を挿入する必要があります。

簡単な方法は、アドレス バー (アドレスは既に表示されているはずです) をクリックして Enter キーを押すことです。これにより、データを再送信せずにページがリロードされます。

于 2013-07-05T15:40:01.890 に答える