当表为空时,为什么mysql Insert查询失败*?

时间:2012-06-14 18:46:40

标签: php mysql insert

我在一些PHP代码中一个接一个地运行这两个语句。

INSERT INTO input (ID) VALUES('1');
UPDATE input SET `vendor_name` = 'some name' WHERE ID=1

如果数据库表为空(意味着我只是截断了表格),则会创建数据,不会显示任何警告。就好像我从未执行过查询一样。

如果我然后运行

   INSERT INTO input (ID) VALUES('1');

在这个完全相同的清除表上,创建一个条目没问题。 之后,如果我再次运行相同的 INSERT / UPDATE查询

INSERT INTO input (ID) VALUES('2');
UPDATE input SET `vendor_name` = 'some name' WHERE ID=2

然后创建数据并正确设置vendor_name。这里发生了什么??我似乎误解了将数据插入数据库的基本信息。我可以不在空表上像这样背靠背执行语句吗?

为了预先避免不可避免的愚蠢问题,例如“列是否存在?”,这里有一些额外的注意事项:

  • 没有出现任何警告。这真让我烦恼。 INSERT / UPDATE似乎无声地失败。 (是的,是的,我已设置错误报告并检查了日志)

  • 存在并定义了相应的列/表/数据库/权限(如果表中有空行,请记住查询工作正常)

  • ID是主键。我用于ID(1,2,无论如何)的数字似乎并不重要。我也可以反转它们,或者使用101和102,无论如何。

  • 创建表如下所示:CREATE TABLE IF NOT EXISTS $ tablename(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY)。列由用户动态添加。所以现在表中大约有100列(请记住这应该没关系。我只是尝试更新一个列,如果表中有数据,那么更新工作正常)

  • 在那里潜入一个Count(*)查询显示 行已创建,但在Update语句后消失。 (也许这行没有完成,或者有什么东西,并且有一个'确保插入完成'我需要查询的查询?)

1 个答案:

答案 0 :(得分:1)

试试这个代码....对我来说它的作品......

INSERT INTO `input` (ID) VALUES('1');
UPDATE `input` SET `vendor_name` = 'some name' WHERE ID=1