2012-06-10 59 views
0

我对我的网站使用INSERT ON DUPLICATE KEY语句。它用于创建新闻项目,所以我想我可以使用相同的MySQL命令来创建和更新新闻项目。ID不能为空(自动递增)

然而,当我使用以下命令:

INSERT INTO table (id,title,content) VALUES(NULL,"Test","Test"); 

而不是创建它抛出一个错误一个新的自动增量值。但是,该命令适用于我的主要开发服务器。但不在我的笔记本电脑上。两个版本的MySQL都是一样的,唯一的区别是MySQL是在我的服务器上手动安装的,并且在我的笔记本电脑上安装了WAMP。

是否有任何可能导致此错误的MySQL变量?

+1

当你通过mysql命令行客户端输入查询时,你会得到相同的结果吗? –

+0

它在控制台中正常工作。现在检查我的PHP代码四倍,期待我看起来像一个白痴立即到达的时刻。 – THEK

+0

请发布您的PHP代码的相关摘录。您可能正在做类似 '<?php $ id = NULL; mysql_query(“INSERT INTO table(id,title,content)VALUES($ id,\”Test \“,\”Test \“”);?>' * *不与* 相同'<?php mysql_query (...“VALUES(NULL,\”Test \“,\”Test \“);'?> – RandomSeed

回答

0

托管是最好的,我可以解决这个问题。

我检查了我的代码,发现当我插入空的POST'd标识符时,它将其用引号括起来。我现在已经改变了它,使得它不带引号的NULL。所以我现在的查询应该是这样的:

INSERT INTO table (id,title,content) VALUES(NULL,"test","Test") 
ON DUPLICATE KEY UPDATE title=VALUES(title), content=VALUES(content); 

现在可以工作。

2

我会建议使用INSERT INTO table (title,content) VALUES("Test","Test");

这将在表中创建一个新的行用新的递增ID。

+2

这并不能解释为什么原始查询不起作用。 –

+0

@THEK:这个查询是否工作得更好? O.o – RandomSeed

+0

它会起作用,但是,这意味着在我的PHP中,我需要添加额外的代码来查看ID是否已发送,并编写两个不同的SQL命令。鉴于此,如果我可以只发送一个空ID,如果没有给出,那么SQL可以完成所有工作。 – THEK

0

嘿亲爱的我想你应该让这样的查询,

INSERT INTO表(标题,内容)VALUES( “测试”, “测试”); 如果它仍然不起作用,那么检查是否是您的'id'列自动增量或不。

注意:如果这个答案对你有帮助那么请给PLUS吧...