Php Mysql数据库中新数据行之前插入的空行
在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){
<?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
数据库扩展上。