Подтвердить что ты не робот

Неверное целочисленное значение: '' для столбца 'id' в строке 1

Я пытаюсь вставить в мою базу данных mySQL. Первый столбец - это столбец "id", так как он имеет поле auto_increment, я оставил его пустым. По какой-то причине я не могу вставить, и я получаю ошибку, упомянутую ниже. Я ценю любую помощь в этом.

При попытке вставить следующую ошибку:

Incorrect integer value: '' for column 'id' at row 1

мой запрос

$insertQuery = "INSERT INTO workorders VALUES('', '$priority', '$requestType', '$purchaseOrder', '$nte', '$jobSiteNumber')";
4b9b3361

Ответ 1

Это, вероятно, означает, что ваш id является целым числом AUTO_INCREMENT, и вы пытаетесь отправить строку. Вы должны указать список столбцов и опустить его из INSERT.

INSERT INTO workorders (column1, column2) VALUES ($column1, $column2)

Ответ 2

Чтобы MySql сгенерировал порядковые номера для поля AUTO_INCREMENT, у вас есть три варианта:

  • укажите список столбцов и опустите свой столбец auto_incremented из него, как предположил njk. Это лучший подход. См. комментарии.
  • явно назначить NULL
  • явно назначить 0

3.6.9. Использование AUTO_INCREMENT:

... Значение не указано для столбца AUTO_INCREMENT, поэтому MySQL назначенные порядковые номера автоматически. Вы также можете явно присвойте NULL или 0 столбец для генерации порядковых номеров.

Эти три оператора приведут к такому же результату:

$insertQuery = "INSERT INTO workorders (`priority`, `request_type`) VALUES('$priority', '$requestType', ...)";
$insertQuery = "INSERT INTO workorders VALUES(NULL, '$priority', ...)";
$insertQuery = "INSERT INTO workorders VALUES(0, '$priority', ...";

Ответ 3

Попробуйте отредактировать ваш my.cf, прокомментируйте оригинальный sql_mode и добавьте sql_mode = "".

vi /etc/mysql/my.cnf

sql_mode = ""

сохранить и выйти...

service mysql restart

Ответ 4

Это связано с тем, что тип столбца отправки данных является целым числом, и вы отправляете ему строковое значение.

Итак, для меня работал следующий способ. Попробуйте с этим.

$insertQuery = "INSERT INTO workorders VALUES (
                    null,
                    '$priority',
                    '$requestType',
                    '$purchaseOrder',
                    '$nte',
                    '$jobSiteNumber'
                )";

Не используйте 'null'. используйте его как null без одинарных кавычек.

Ответ 5

Для той же ошибки в wamp/phpmyadmin я отредактировал my.ini, прокомментировал оригинал:

;sql-mode= "STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"

и добавил sql_mode = "".

Ответ 6

Я решил эту проблему, которая была вызвана простым копированием и вставкой из идентичной строки кода.