每当我尝试刷新页面时,我都会得到一个新行。我试着阅读很多关于这个问题的帖子,但是因为我是数据库编程的新手,所以我什么也做不了。
我不知道价值来自哪里,因为相同的价值会一遍又一遍地重复。
我的代码。
<?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/>';
}
?>
答案 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";
}
这只是一个例子,您可以根据您的要求对其进行修改:)