PHP Post Echo两个Sql条目

时间:2017-02-05 17:27:50

标签: php mysql

我需要帮助找出为什么我使用以下代码在我的数据库中收到两个条目。此时它正在将完整记录和空白记录输入数据库。不知道为什么。任何人都可以指出我正确的方向我错了吗?谢谢。

表单和PHP代码

<form method="post" action="cu.php">

    <input type="text" name="name" value size="35"
           placeholder="Name">&nbsp&nbsp
    <input type="text" name="email" value size="35" placeholder="Email">
    <br><br>
    <select name="dropdown">
        <option value="0">Comment Type</option>
        <option value="A">Accounting</option>
        <option value="FAQ">FAQ</option>
        <option value="GQ">General Question</option>
        <option value="TS">Technical Support</option>
    </select>
    <br><br>

    <textarea name="comments" rows="10" cols="60" style"border: 3px solid #555"
    placeholder="Comments"></textarea>
    <br><br>

    <input type="submit" value="Submit" id="btn">
    <input type="reset" value="Reset" id="btn">

</form>
</one>
</div>

<?php
if ($_POST) {

    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name : <b>$name</b>";
    echo "<br>You can use the following form again to enter a new name.";
}

$con = mysql_connect("mysql", "username", "pswd");

if (!$con) {
    die('Could not connect: ' . mysql_error());
}

/* Prevent duplicate submissions */
if (isset($_COOKIE['FormSubmitted'])) {
    show_error('You may only submit this form once per session!');
}

mysql_select_db("communication", $con);

$sql = "INSERT INTO contact (name, email, cusno, dropdown, comments)

       VALUES

      ('$_POST[name]', '$_POST[email]', '$_POST[cusno]', '$_POST[dropdown]',             
       '$_POST[comments]')";

if (!mysql_query($sql, $con)) {
    die('Error: ' . mysql_error());
}

mysql_close($con);

2 个答案:

答案 0 :(得分:3)

那是因为,每次页面加载时,php都会运行你的sql插入代码。发生这种情况是因为您没有检查表单是否已提交,然后运行sql查询。

这样做:

为您的提交按钮添加名称:

<input type="submit" value="Submit" id="btn" name="submit">

然后在php中,将sql插入包装在if语句

// check if submit button is POST, then run query
if(isset($_POST['submit']))
{
  $sql = "INSERT INTO contact (name, email, cusno, dropdown, comments)

         VALUES

        ('$_POST[name]', '$_POST[email]', '$_POST[cusno]', '$_POST[dropdown]',             
         '$_POST[comments]')";

  if (!mysql_query($sql, $con)) {
      die('Error: ' . mysql_error());
  }
}

答案 1 :(得分:-1)

更新此行

if (!mysql_query($sql, $con)) {
die('Error: ' . mysql_error());
}

if (!empty($_POST) && !mysql_query($sql, $con) ) {
die('Error: ' . mysql_error());
}

此外,我认为您浏览器请求favicon文件,并且您的代码可以执行两次