PHP中的SQL插入两行而不是一行
下面的代码将向我的数据库中插入两条记录,但我只希望它插入一条。为什么要将行插入两次PHP中的SQL插入两行而不是一行,php,sql,Php,Sql,下面的代码将向我的数据库中插入两条记录,但我只希望它插入一条。为什么要将行插入两次 <? if (!$con) { die('Could not connect: ' . mysql_error()); } $i=1; while($i<=1) { if (isset($_POST['submit'])) { $sql="INSERT INTO customers (company, salutati
<?
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$i=1;
while($i<=1)
{
if (isset($_POST['submit']))
{
$sql="INSERT INTO customers
(company, salutation, first_name,
last_name, phone, email, fax,
street, town, county, postcode,
type, notes)
VALUES
('$_POST[company]',
'$_POST[salutation]',
'$_POST[first_name]',
'$_POST[last_name]',
'$_POST[phone]',
'$_POST[fax]',
'$_POST[email]',
'$_POST[street]',
'$_POST[town]',
'$_POST[county]',
'$_POST[postcode]',
'$_POST[type]',
'$_POST[notes]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
}
$i++;
}
?>
客户表是否至少定义了一个主键来停止重复
如果CUSTOMERS表中的列组合条目已经存在于表中,那么您的PHP webapp是否足够聪明,可以阻止某人访问此页面?我不能仅从这一点来判断。代码几乎不可读缩进比不存在缩进更糟糕,并且在查询中嵌入post变量的方式也没有让它变得更清晰(而且它实际上可能会导致安全漏洞)
尝试编写echo$sql代码>在你的$sql=…
怪物之后。您将能够看到是否执行了两个查询,或者是否只有一个查询插入了两行,在最后一种情况下,它可能会给您一个很好的提示。如果这对你没有帮助,把你的结果贴在那里,我或其他人可以在这里看一下。但是请注意,使用这种不友好的代码对我们来说并不容易,也不愉快。我已经研究了您的代码,我不认为有任何理由进行双重插入。还有什么我们应该知道的吗?它不应该引起问题,但是为什么在代码中有一个while循环呢?这个页面有没有可能被提交两次?有触发器吗 我猜是因为它被执行了两次。(这不是小题大做——这很可能是控制流问题,因为似乎没有任何东西会导致上述内容插入两次。)
也就是说,这里有很多令人担忧的事情,比如缺少输入转义等。例如:$i变量的用途是什么?首先,您应该使用mysql\u real\u escape\u string之类的东西来转义您的输入数据;第二,为什么要使用while循环?也许代码中的某些顺序是:P$_POST[company]应该是$_POST['company']@bitter:为什么要使用while循环/