35

我正在尝试插入我的 mySQL 数据库。第一列是“id”列,因为它是一个 auto_increment 字段,所以我将其留空。出于某种原因,我无法插入,并且收到下面提到的错误。我很感激这方面的任何帮助。

尝试插入时出现以下错误:

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

我的查询

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

6 回答 6

35

这可能意味着您id是一个AUTO_INCREMENT整数,并且您正在尝试发送一个字符串。您应该指定一个列列表并将其从INSERT.

INSERT INTO workorders (column1, column2) VALUES ($column1, $column2)
于 2013-02-07T23:15:44.410 回答
32

要让 MySql 为AUTO_INCREMENT字段生成序列号,您有三个选项:

  1. 按照 njk 的建议,指定列出一个列列表并从中省略您的 auto_incremented 列。那将是最好的方法。看评论。
  2. 显式分配 NULL
  3. 显式分配 0

3.6.9。使用 AUTO_INCREMENT

...没有为 AUTO_INCREMENT 列指定值,因此 MySQL 自动分配了序列号。您还可以将NULL0显式分配给列以生成序列号。

这三个语句将产生相同的结果:

$insertQuery = "INSERT INTO workorders (`priority`, `request_type`) VALUES('$priority', '$requestType', ...)";
$insertQuery = "INSERT INTO workorders VALUES(NULL, '$priority', ...)";
$insertQuery = "INSERT INTO workorders VALUES(0, '$priority', ...";
于 2013-02-07T23:24:57.820 回答
24

尝试编辑您的my.cf并评论原始 sql_mode 并添加sql_mode = ""

vi /etc/mysql/my.cnf

sql_mode = ""

保存并退出...

service mysql restart
于 2018-11-05T12:45:19.667 回答
2

这是因为您的数据发送列类型是整数,并且您正在向其发送字符串值。

因此,以下方式对我有用。试试这个。

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

不要使用'null'. 使用它作为null没有单引号。

于 2017-11-28T07:06:11.643 回答
2

对于相同的错误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 = ""

于 2019-05-06T07:50:45.350 回答
0

如果有 phpMyAdmin,只需转到变量并查找 SQL 模式,变量,编辑它并删除变量的所有内容,然后保存。对于那些不想接触代码的人来说,这也应该可以解决这个问题。

于 2021-08-26T15:18:16.440 回答