2012-06-10 60 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吧...