Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql数据库中新数据行之前插入的空行_Php_Mysql_Database_Forms - Fatal编程技术网

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

Php Mysql数据库中新数据行之前插入的空行,php,mysql,database,forms,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){

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

您正在使用相同的脚本来显示表单和处理表单提交。但是,当它插入到数据库中时,它不会检查它是否在响应用户第一次打开表单或提交表单而运行。当它们第一次转到URL时,
$\u 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();

}

您正在使用相同的脚本来显示表单和处理表单提交。但是,当它插入到数据库中时,它不会检查它是否在响应用户第一次打开表单或提交表单而运行。当它们第一次转到URL时,
$\u 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();

}

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

<?php

    if (!empty($_POST)) {

        // all of your php here

    }

?>

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

<?php

    if (!empty($_POST)) {

        // all of your php here

    }

?>

您正在使用不确定是否存在的数据执行MySql查询
中,只需执行此操作

if(isset($_POST['name'])){
    if(!empty($_POST['name'])){
        //do your stuff
    }
}
所以,只要确保页面不是刚刚加载(也会有post请求)

然后确保用户在
name
input

中插入了一些内容,您正在使用不确定是否存在的数据执行MySql查询
中,只需执行此操作

if(isset($_POST['name'])){
    if(!empty($_POST['name'])){
        //do your stuff
    }
}
所以,只要确保页面不是刚刚加载(也会有post请求)

然后确保用户已在
name
input

中插入了某些内容。您的插入操作将在每次请求时执行,而不仅仅是在提交表单时执行,因此在首次访问页面时,空行将被插入到数据库中。纠正此行为的简单方法是使用以下条件:

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

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

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

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

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

上面的代码将只插入一行-如果您得到两行,那么上面的代码将被调用两次。很可能是因为您不必检查表单是否已提交。因此,代码为原始GET运行一次,然后再次为表单提交帖子运行一次。请注意,每当您在mew代码中使用数据库扩展时,您都会遇到这样的问题:一只小猫在世界某个地方被勒死了,它已被弃用多年,并且在PHP7中永远消失了。如果你只是在学习PHP,那么就把精力花在学习
PDO
mysqli
数据库扩展上。上面的代码将只插入一行-如果您得到两行,那么上面的代码将被调用两次。很可能是因为您不必检查表单是否已提交。因此,代码为原始GET运行一次,然后再次为表单提交帖子运行一次。请注意,每当您在mew代码中使用数据库扩展时,您都会遇到这样的问题:一只小猫在世界某个地方被勒死了,它已被弃用多年,并且在PHP7中永远消失了。如果你只是在学习PHP,那么就把精力花在学习
PDO
mysqli
数据库扩展上。