Подскажите что может быть не так: создаю таблицу: [sql] CREATE TABLE `test` (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL, test TEXT)CHARACTER SET cp1251 [/sql] Потом делаю запрос например такой: [sql] INSERT INTO `test` SET `id`='NULL', `test`='ss'; [/sql] Он работает. Делаю этот же запрос через php: PHP: <?php $quire = 'INSERT INTO `test` SET `id`="NULL", `test`="ss"'; mysql_query($quire) or die(mysql_error()); ?> Он не работает, пишет: Incorrect integer value: 'NULL' for column 'id' at row 1 подставляю вместо NULL число срабатывает, в чем беда? Ведь он создан как INT AUTO_INCREMENT PRIMARY KEY и когда шлешь NULL то должен сам подставлять число, тем более что когда без php, а на прямую к базе этот запрос то все работает, может чтото с настройками php?
0) учиться соображать что пишешь и почему. И почему при копировании запроса он у тебя изменяется. 1) курить кавычки. 2) курить что такое AUTO_INCREMENT и зачем он нужен.
1)кавычки я уже ставил и так и сяк никак не работает PHP: $quire = "INSERT INTO `test` SET `id`='NULL', `test`='ss'"; так тоже не работает пишет Incorrect integer value: 'NULL' for column 'id' at row 1 тут суть не в кавычках! 2)Я знаю что такое AUTO_INCREMENT и знаю зачем он нужен, я бы врядли им пользовался бы если бы не знал...! но от этого скрипт не начал работать...
Удалил `id`='NULL' из запроса все стало работать. Но догнать не могу почему при обращении к базе напрямую работает с `id`='NULL' а из php не работает! Раньше всегда вставлял `id`='NULL' и все работало, а недавно переставил пхп первый раз после установки к базе обратился и вот такая вот ерунда... вот я и думал может есть какие настройки хитрые...
> Incorrect integer value: 'NULL' for column 'id' at row 1 русским же языком написано, что строку нельзя записать в целочисленное поле
CREATE TABLE `test` (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL, test TEXT)CHARACTER SET cp1251 тебя не смущает что ты задаешь id как INT и NOT NULL (не NULL!) и тут же пытаешься ему присвоить строку и "Null"! я вообще чайник в базах но ЭТО очевидно!
ты даже не представляешь какой ты чайник если передан нулл, то ставится дефолтное значение. если дефолтное значение не задано, то нулл. если в поле нельзя поставить нулл - генерируется ошибка. для автоинкремента всегда есть дефолтное значение - на один больше чем последний созданный id.
dark-demon вот верно! так в том и суть что при указании команды прямо к БД работало, а из пхп нет! вот в чем был вопрос...
dark-demon Так а смысл передавать NULL "если в поле нельзя поставить нулл"?! Что бы поставить дефолтное значение?! ИМХО тогда проще вообще ничего не передавать! Hawk id='NULL' - записывает строку "NULL" id=NULL - записывает значение "NULL" (т.е. значене не определено)!
имхо, иногда, если запрос длинный, чем перечислять кучу пар имя/значение, проще на автоинкрементном поле NULL передать.