ERROR 1366(HY000):不正确的整数值:''对于列' id'在第1行

时间:2015-04-05 22:26:41

标签: php mysql

我的代码:

$sql = "INSERT INTO ". static::$table_name ." (";
$sql .= join(", ", array_keys($attributes));
$sql .= ") VALUES ('";
$sql .= join("', '", array_values($attributes));
$sql .= "')";

输出:

echo $sql;
//INSERT INTO users (id, username, password, first_name, last_name)
VALUES ('', 'lukeduke', '123456', 'Luke', 'Duke')

当我运行此查询时,我得到:

  

ERROR 1366(HY000):不正确的整数值:''对于第1行的列'id'

2 个答案:

答案 0 :(得分:9)

如果你想使用这个插入,你必须在你的sql中提供一个整数值而不是一个空字符串,它应该是这样的:

INSERT INTO users (id, username, password, first_name, last_name)
VALUES (1, 'lukeduke', '123456', 'Luke', 'Duke')

或者如果您的id是自动增量的,您可以使用这样的SQL:

INSERT INTO users (username, password, first_name, last_name)
VALUES ('lukeduke', '123456', 'Luke', 'Duke')

在这种情况下,这应该是您的代码:

//extracting your first element of the array (id in this case)
$attributes = array_slice($attributes, 1);

$sql = "INSERT INTO ". static::$table_name ." (";
$sql .= join(", ", array_keys($attributes));
$sql .= ") VALUES ('";
$sql .= join("', '", array_values($attributes));
$sql .= "')";

阅读更多内容:

答案 1 :(得分:2)

您的id列类型是什么?

如果是整数和自动递增,则将null值传递给它