我的代码:
$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'
答案 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
值传递给它