在Mysql数据库中新数据行之前插入的空行

时间:2016-08-31 19:45:50

标签: php mysql database forms

在MySQL数据库之前插入一个空白行,并与实际数据行一起插入。这是为什么?

这是我的代码:

<?php

define('DB_NAME','my_db_name');
define('DB_USER','my_db_user');
define('DB_PASSWORD','my_db_pass');
define('DB_HOST','localhost');

$link = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);

if (!$link){
 die('Could no connect'.mysql_error());

}

$db_selected = mysql_select_db(DB_NAME, $link);

if(!$db_selected){
 die('Can\'t no connect'. DB_NAME .':'.mysql_error());

}

$name = $_POST['name'];

$sql ="INSERT INTO demo (name) VALUES ('$name')";

if(!mysql_query($sql)){

  die('Error:'.mysql_error());
}

mysql_close();

?>
<html>
<body>
<form  action="demo2.php" method="post">
<input id="name" name="name" type="text" placeholder="" class="form-control input-md" required="">
<input type="submit" class="btn btn-success" value="Add Client">
</form>
</body>
</html>

这是我的MySQL数据库结构:

Mysql database Structure

这是在“gunk”名称数据条目之前带有空白条目的表:

enter image description here

我花了很多时间将这个问题分解为一个表单输入,并且数据库连接成功,我的数据被添加,只有空白行。

为什么我在数据库中的新数据行之前插入空行?

4 个答案:

答案 0 :(得分:1)

您正在使用相同的脚本来显示表单并处理表单提交。但是当它插入数据库时​​,它不会检查它是否正在运行以响应用户第一次打开表单或提交表单。当他们第一次访问URL时,$_POST为空,因此您插入一个空值。添加一个支票。

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $link = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);

    if (!$link){
     die('Could no connect'.mysql_error());

    }

    $db_selected = mysql_select_db(DB_NAME, $link);

    if(!$db_selected){
     die('Can\'t no connect'. DB_NAME .':'.mysql_error());

    }

    $name = $_POST['name'];

    $sql ="INSERT INTO demo (name) VALUES ('$name')";

    if(!mysql_query($sql)){

      die('Error:'.mysql_error());
    }

    mysql_close();

}

答案 1 :(得分:1)

您正在使用您不确定是否存在的数据进行MySql查询!
<?php?>内只需执行此操作

if(isset($_POST['name'])){
    if(!empty($_POST['name'])){
        //do your stuff
    }
}

所以请确保该页面未被加载(邮件请求也即将到来)
然后确保用户在name输入中插入了一些内容

答案 2 :(得分:1)

您的插入操作是在每个请求上执行的,而不仅仅是在提交表单时执行,因此在第一次访问页面时,空行会插入到数据库中。纠正此行为的一种简单方法是使用以下条件:

if (isset($_POST['name'])) {
    // Your insert command here
}

上面的代码可以使用,但是您还应该在代码中包含一些额外的步骤,例如清理或验证用户输入。

答案 3 :(得分:0)

您需要重构代码...在页面加载时,插入查询实际上正在执行!这会插入一个空行;然后在表单提交时插入已发布的数据。重构为:

<?php

    if (!empty($_POST)) {

        // all of your php here

    }

?>