找不到PHP SQL循环的来源

时间:2012-12-18 11:08:55

标签: php mysql sql forms

对你们这个简单的问题 - 我正在尝试将数据提交到数据库中的表,并且在继续向表中添加无限数量的空行之前,它已成功完成。

以下是代码:

<?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>

重申一下,我在连接数据库或成功将表单中的值放入表中没有问题。但是,一旦输入值,页面就会不断刷新,并在表格中添加空行。

我的代码在这里出了什么问题?

4 个答案:

答案 0 :(得分:0)

问题在于:

<script language="JavaScript">
self.location="?email=1";
</script>

Self.location重定向浏览器,您通过添加url参数email = 1重定向到同一页面,这当然再次运行脚本导致无限循环。您应该检查$_POST是否包含有效值,然后才插入数据库。

答案 1 :(得分:0)

嗯,这正是你的代码所做的:

  • 在服务器端写一个DB行
  • 将页面返回到客户端,其中包含<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());
     }
     }