对你们这个简单的问题 - 我正在尝试将数据提交到数据库中的表,并且在继续向表中添加无限数量的空行之前,它已成功完成。
以下是代码:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$about = $_POST['about'];
$msg = $_POST['message'];
$con = mysql_connect("DATABASE","USERNAME","PASSWORD");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
$database = mysql_select_db("benpearl_co_uk_db", $con);
if(!$database) {
die('Houston, we have a problem: ' . mysql_error());
}
$sql="INSERT INTO contact (name, email, about, message) VALUES ('$name', '$email', '$about', '$msg')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<script language="JavaScript">
self.location="?email=1";
</script>
重申一下,我在连接数据库或成功将表单中的值放入表中没有问题。但是,一旦输入值,页面就会不断刷新,并在表格中添加空行。
我的代码在这里出了什么问题?
答案 0 :(得分:0)
问题在于:
<script language="JavaScript">
self.location="?email=1";
</script>
Self.location重定向浏览器,您通过添加url参数email = 1
重定向到同一页面,这当然再次运行脚本导致无限循环。您应该检查$_POST
是否包含有效值,然后才插入数据库。
答案 1 :(得分:0)
嗯,这正是你的代码所做的:
<script language="JavaScript">self.location="?email=1";</script>
您需要使JS部分成为条件。
答案 2 :(得分:0)
您始终使用以下内容重定向到同一页面:
self.location="?email=1";
尝试类似:
$sql = "INSERT INTO contact (name, email, about, message) VALUES ('$name', '$email', '$about', '$msg')";
if (mysql_query($sql, $con))
{
header('Location: $other_page');
}
die('Error: ' . mysql_error());
答案 3 :(得分:0)
只有在单击按钮提交时才应运行插入,因此即使再次加载页面也不会再次插入数据
尝试这样做
if (isset($_POST['submit'])) //then run your insert sql
{
$sql="INSERT INTO contact (name, email, about, message) VALUES ('$name', '$email', '$about', '$msg')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
}