2012-06-10 3 views
0

Я использую инструкцию INSERT ON DUPLICATE KEY для моего сайта. Это для создания новостей, поэтому я решил, что могу использовать ту же команду MySQL для создания и обновления новостей.ID не может быть null (Auto Increment)

Однако, когда я использую следующее:

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

Вместо создания нового значения автоматического приращения он выдает ошибку. Однако команда работает на моем основном сервере разработки. Но не на моем ноутбуке. Обе версии MySQL одинаковы, единственное отличие заключается в том, что MySQL был установлен вручную на моем сервере и с WAMP на моем ноутбуке.

Существуют ли какие-либо MySQL-переменные, которые могут быть причиной этого?

+1

Получаете ли вы те же результаты при вводе запроса через клиент командной строки mysql? –

+0

Он отлично работал в консоли. Четырёхкратная проверка моего кода PHP теперь, ожидая момента, когда я буду похож на идиота, чтобы прибыть в ближайшее время. – THEK

+0

Пожалуйста, разместите соответствующий фрагмент кода PHP. Возможно, вы делаете что-то вроде '' , который * не * совпадает с ' RandomSeed

ответ

0

Успели решить, как лучше всего, как я могу.

Я проверил свой код и обнаружил, что когда я вставил пустой POST'd ID, он обертывал его в котировках. Теперь я изменил его так, что он помещает 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 мне нужно будет добавить дополнительный код, чтобы увидеть, был ли отправлен идентификатор, и написать две разные команды SQL. Принимая во внимание, что если бы я мог просто отправить нулевой идентификатор, если он не был указан, SQL может выполнить всю работу. – THEK

0

Эй Дорогой я думаю, что вы должны сделать запрос, как это,

INSERT INTO таблицы (название, содержание) VALUES ("Test", "Test"); Если он все еще не работает, проверьте, является ли ваш столбец «id» автоуровнем или нет.

Примечание: Если этот ответ полезным для вас, пожалуйста, дайте плюс к этому ...