我之前从未遇到过这样的错误。我正在使用准备好的语句,并且已经尝试了一切来解决问题,包括将表单剥离到它的裸组件。
以下代码在执行时会创建一个重复的行。
$sql = "INSERT INTO inventory
VALUES ('','$stocknum','$year','$make','$model','$price','$body','$mile','$engine','$trans',
'$drive','$doors','$fuel','$vin','$des','$featured','$sale','$features','$safety','$airbags','$power',
'$exterior','$interior','','','','','')";
$insert = mysql_query($sql,$connection) or die(mysql_error());
$name = mysql_insert_id();
我无法理解为什么会这样做。
答案 0 :(得分:2)
在使用和orm库访问数据库时,我在项目中遇到了同样的问题。也试过用mysql直接测试
经过近一天在多个浏览器中测试并获得不同的结果后,我发现我使用的扩展程序(Webug)导致了对页面的回忆。禁用扩展后,它工作
我已经测试了导致该问题的一些扩展......在chrome:Webug。
希望有所帮助
答案 1 :(得分:1)
insert语句可能会被调用两次。您是否添加了日志记录以确保此代码仅运行一次?您是否进行了搜索以确保没有其他代码可以在其他地方添加库存记录?
答案 2 :(得分:1)
清单表中有多少列?第二行是否与第一行完全相同?我不知道PHP的数据库接口,但我可以设想一个错误,如果你给它提供的字段多于列,它会尝试创建多行。
编辑:对MySQL文档的一点研究发现:
使用VALUES的INSERT语句 语法可以插入多行。去做 这个,包括多个列列表 每个值都包含在内 括号并用逗号分隔。 例如:
INSERT INTO tbl_name(a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
每行的值列表必须是 括在括号内。该 以下陈述是非法的,因为 列表中的值的数量 不匹配列名数:
INSERT INTO tbl_name(a,b,c) VALUES(1,2,3,4,5,6,7,8,9);
根据变量的内容以及PHP / MySQL驱动程序如何处理这些变量(直接文本替换或?
占位符),正在执行的语句可能看起来不像您期望的那样。在执行之前尝试显示$sql
的值。
答案 3 :(得分:0)
之后查询表时,您是仅从该表中选择还是将其加入另一个表?如果您在联接表中有多个子记录,您将获得多个结果。
你的代码对我来说是正确的,除非页面的其他部分有什么东西我没看到。
答案 4 :(得分:0)
在没有任何真正明确的结论的情况下,我的观察结果是,当我说“我认为它与我的网络主机有关”时,我认为Red Element正走在正确的轨道上,因为现在每个添加SQL数据的脚本都是做同样的事情'。
我遇到了上面列出的问题,直到我在不同的平台上运行相同的代码并且工作正常才能看到这个问题。我最初在localhost WAMP配置中进行测试,但是当我将代码提升到真实服务器时,它没有问题。
因此我建议如果其他人有问题,那么值得尝试一下不同的服务器配置。
答案 5 :(得分:-1)
我猜你的.htaccess文件有问题,该文件向同一个脚本发出2个请求。进行插入时,记录带有时间戳的消息。