每次刷新页面时都会将行插入数据库

时间:2014-06-21 15:06:09

标签: php html mysql row repeat

每当我尝试刷新页面时,我都会得到一个新行。我试着阅读很多关于这个问题的帖子,但是因为我是数据库编程的新手,所以我什么也做不了。

我不知道价值来自哪里,因为相同的价值会一遍又一遍地重复。

我的代码。

<?php
require('connect.php');

$sql="CREATE TABLE test(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
user VARCHAR(25),message LONGTEXT)";

if($sql==true){
$res=mysql_query( $sql);

}
?>

<?php

$user=null;
$message=null;

if(isset($_POST['user'])){
$user=$_POST['user'];
}
if(isset($_POST['message'])){
$message=$_POST['message'];
}


 if(!empty($_POST)){

if($user&&$message){
$insert=mysql_query("INSERT INTO test(user,message)VALUES('$user','$message')");
}
else{
echo "please fill out the fields";
}
}
?>



<html>
<body>
<form action="database.php" method="post">
<p><label for="user">Name:</label><br/>
<input type="text" name="user" id="user"/></p>
<p><label for="message">Message:</label><br/>
<textarea ="message" name="message"> </textarea></p>
<button type="submit" name="submit" value="send">Send Message:</button>
</form>
 <br/><br/><tr><td>The Users Comments:</td><td><br/><br/>
</html>


<?php
$query=mysql_query("SELECT * FROM test ORDER BY id DESC");
while($row=mysql_fetch_ASSOC($query)){

$name=$row["user"];
$message=$row["message"];

echo "username:",$name,'<br/>'," Messages: ",$message,'<br/>','<br/>';
}

?>

4 个答案:

答案 0 :(得分:0)

问题是,每次刷新页面时,浏览器都会重新发布相同的数据。要解决此问题,您应该考虑在页面中实现Post, Redirect, Get模式。

从根本上说,这意味着在成功发布POST(即插入行)后,您应该重定向到另一个页面。这有效地阻止了用户重新发布相同数据的能力。

上面的链接很好地概述了如何实现......

答案 1 :(得分:0)

我的代码中没有发现问题。可能当您第一次发布数据然后刷新页面时,数据会再次发布。如果浏览器重新发布数据,大多数浏览器如firefox都会得到确认。 修改 为避免这种情况,您必须使用重定向到GET方法。 see this

答案 2 :(得分:0)

尝试编辑此

  

块引用

 if(!isset($_POST)){

     if($user && $message){

     $insert=mysql_query("INSERT INTO test(user,message)VALUES($user,$message)");

}

并确保ctrl + f5然后刷新页面

答案 3 :(得分:0)

在插入检查数据库之前,数据库中是否存在这些值 喜欢

if(!empty($_POST)) {
    if($user && $message) {
        //check if this user and message in present database or not 
        $query = mysql_query("SELECT * FROM test WHERE user='".$user."' AND message='".$message."'");
        $count = mysql_num_rows($query);

        if ($count > 0 ){ // if $count is greater than 0 means values exists in database then 
            echo "Data exists";
        }
        else {
            // insert 
            $insert=mysql_query("INSERT INTO test(user, message) VALUES ('$user','$message')");
        }
    }
    else {
        echo "please fill out the fields";
    }

这只是一个例子,您可以根据您的要求对其进行修改:)