PHP-数据库在加载页面时生成空行

PHP-数据库在加载页面时生成空行,php,sql,forms,Php,Sql,Forms,我有一个表单,它将提交将行插入数据库的信息(公司详细信息)。提交工作正常,但我还发现转到包含表单的页面将在数据库中插入一个空行。知道为什么会这样吗?代码如下: <?php echo "<form action='addnew.php' method='post'>"; echo "<input type='text' name='categoryAdd' value='Travel'/><br/>"; echo "<input type='text

我有一个表单,它将提交将行插入数据库的信息(公司详细信息)。提交工作正常,但我还发现转到包含表单的页面将在数据库中插入一个空行。知道为什么会这样吗?代码如下:

<?php
echo "<form action='addnew.php' method='post'>";
echo "<input type='text' name='categoryAdd' value='Travel'/><br/>";
echo "<input type='text' name='EstablishmentNameAdd' value='EstablishmentName'/><br/>";
echo "<input type='text' name='Address1Add' value='Address1'/><br/>";
echo "<input type='text' name='Address2Add' value='Address2'/><br/>";
echo "<input type='text' name='Address3Add' value='Address3'/><br/>";
echo "<input type='text' name='Address4Add' value='Address4'/><br/>";
echo "<input type='text' name='PostcodeAdd' value='Postcode'/><br/>";
echo "<input type='text' name='NearestStationAdd' value='NearestStation'/><br/>";
echo "<input type='text' name='TelAdd' value='Tel'/><br/>";
echo "<input type='text' name='FaxAdd' value='Fax'/><br/>";
echo "<input type='text' name='EmailAdd' value='Email'/><br/>";
echo "<input type='text' name='WebsiteAdd' value='Website'/><br/>";
echo "<input type='text' name='DescriptionAdd' value='Description'/><br/>";
echo "<input type='submit' value='test'/>";
echo "</form>"; 

$EstablishmentNameAdd = mysql_real_escape_string($_POST['EstablishmentNameAdd']);
$CategoryAdd = $_POST['categoryAdd'];
$Address1Add = mysql_real_escape_string($_POST['Address1Add']);
$Address2Add = mysql_real_escape_string($_POST['Address2Add']);
$Address3Add = mysql_real_escape_string($_POST['Address3Add']);
$Address4Add = mysql_real_escape_string($_POST['Address4Add']);
$PostcodeAdd = $_POST['PostcodeAdd'];
$NearestStationAdd = mysql_real_escape_string($_POST['NearestStationAdd']);
$TelAdd = $_POST['TelAdd'];
$FaxAdd = $_POST['FaxAdd'];
$EmailAdd = mysql_real_escape_string($_POST['EmailAdd']);
$WebsiteAdd = mysql_real_escape_string($_POST['WebsiteAdd']);
$DescriptionAdd = mysql_real_escape_string($_POST['DescriptionAdd']);

$result1 = mysql_query("INSERT into establishment_id (EstablishmentName) values ('$EstablishmentNameAdd')");
$result2 = mysql_query("SELECT * from establishment_id where EstablishmentName = '$EstablishmentNameAdd'");
while($row = mysql_fetch_array($result2))
  {
$ID = $row['EstablishmentID'];
$NAME = $row['EstablishmentName'];

};
$result3 = mysql_query("INSERT into establishmentdetails (EstablishmentID, EstablishmentName, category, Address1, Address2, Address3, Address4, Postcode, NearestStation, Tel, Fax,
Email, Website, Description) values('$ID', '$EstablishmentNameAdd', '$CategoryAdd', '$Address1Add', '$Address2Add', '$Address3Add', '$Address4Add', '$PostcodeAdd', '$NearestStationAdd', '$TelAdd', '$FaxAdd', '$EmailAdd',
 '$WebsiteAdd', '$DescriptionAdd')");

?>

在所有回音之后添加以下内容:

if(!empty($_POST)){
...
}

用这种方式包装所有的底部代码,这样只有在有post的情况下才会进行插入。

发生这种情况是因为您正在回显表单。。然后立即将尚不存在的内容插入数据库

您可以尝试以下方法:

if(count($_POST) > 0 && in_array('EstablishmentNameAdd',$_POST)) {
$EstablishmentNameAdd = mysql_real_escape_string($_POST['EstablishmentNameAdd']);
$CategoryAdd = $_POST['categoryAdd'];
$Address1Add = mysql_real_escape_string($_POST['Address1Add']);
$Address2Add = mysql_real_escape_string($_POST['Address2Add']);
$Address3Add = mysql_real_escape_string($_POST['Address3Add']);
$Address4Add = mysql_real_escape_string($_POST['Address4Add']);
$PostcodeAdd = $_POST['PostcodeAdd'];
$NearestStationAdd = mysql_real_escape_string($_POST['NearestStationAdd']);
$TelAdd = $_POST['TelAdd'];
$FaxAdd = $_POST['FaxAdd'];
$EmailAdd = mysql_real_escape_string($_POST['EmailAdd']);
$WebsiteAdd = mysql_real_escape_string($_POST['WebsiteAdd']);
$DescriptionAdd = mysql_real_escape_string($_POST['DescriptionAdd']);

$result1 = mysql_query("INSERT into establishment_id (EstablishmentName) values ('$EstablishmentNameAdd')");
$result2 = mysql_query("SELECT * from establishment_id where EstablishmentName = '$EstablishmentNameAdd'");
while($row = mysql_fetch_array($result2))
  {
$ID = $row['EstablishmentID'];
$NAME = $row['EstablishmentName'];

};
$result3 = mysql_query("INSERT into establishmentdetails (EstablishmentID, EstablishmentName, category, Address1, Address2, Address3, Address4, Postcode, NearestStation, Tel, Fax,
Email, Website, Description) values('$ID', '$EstablishmentNameAdd', '$CategoryAdd', '$Address1Add', '$Address2Add', '$Address3Add', '$Address4Add', '$PostcodeAdd', '$NearestStationAdd', '$TelAdd', '$FaxAdd', '$EmailAdd',
 '$WebsiteAdd', '$DescriptionAdd')");
}

那是一个糟糕的方法<代码>如果($\u服务器['REQUEST\u METHOD']=='POST')
保证工作。如果提交的内容合法地是空的,你的将失败。@MarcB,是的,是真的,但OP不希望在空帖子上插入内容,这就是问题所在!事实上,他正在做一个GET的插入,这就是问题所在。简单地说“不是空帖子”并不能阻止空白字段的出现。他还需要添加更多的服务器端验证。@MarcB不,他的表单是一个
帖子
,但是是的,还需要更多的验证,这只是一个开始
…但是我还发现转到包含表单的页面将…
。第一次点击是GET,然后是post。:P抱歉,这是一个打字错误。。我拉了车!。谢谢你为什么选择了
机构名称添加
作为这篇文章的警告?这只是一个例子。。我选择了它,因为它似乎是最有必要的。例如,你可以有一个企业,但没有一个网站。或者也许你正处于建立你的机构的中间。所以你还没有电话号码。不过,所有机构都将有一个名称。任何时候,与该机构有关联的每个人都会知道这个名字。我刚才解释了我为什么选择这个名字。如果OP在这个领域有问题,他可以改变它。非常感谢那些帮助他的人,但是由于某些原因,它仍然不起作用。我忽略了一件事,那就是建立id表中有一个用于唯一id的自动递增字段。这有关系吗?有趣的是,当我刷新页面时,它不会生成一个空行。