1

我在一些 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 语句之后消失。(也许该行没有完成,或者其他什么,我需要运行一个“确保插入完成”查询?)

4

1 回答 1

1

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

INSERT INTO `input` (ID) VALUES('1');
UPDATE `input` SET `vendor_name` = 'some name' WHERE ID=1
于 2012-06-14T19:07:09.387 回答