You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL语法整数值错误:#1366自增ID插入异常求助

解决MySQL自增列INSERT时的#1366错误

嘿,这个坑我当初刚学PHP+MySQL的时候也踩过!咱们来一步步拆解问题:

首先,你遇到的#1366 Incorrect integer value错误,根源在于你给自增整数ID列传了空字符串''。虽然自增列确实应该由数据库自动生成,但空字符串并不是MySQL认可的“让数据库自动处理”的有效值——尤其是当MySQL处于严格模式(现在默认都是开启的)时,整数列不能接收非整数类型的空字符串。

两种靠谱的解决方案:

1. 显式指定要插入的列(推荐)

最稳妥的写法是不包含自增ID列,直接列出你要插入数据的列名,这样MySQL会自动为自增ID生成值:

INSERT INTO Users (username, password, your_third_column, your_fourth_column) VALUES ('$username','$password','0','empty');

注意:把your_third_column和your_fourth_column替换成你表中对应的真实列名,比如可能是is_active和avatar之类的

2. 给自增列传NULL而非空字符串

如果你一定要写全所有列,那自增列的位置应该传NULL,MySQL会自动将其替换为下一个自增的整数值:

INSERT INTO Users VALUES (NULL,'$username','$password','0','empty');

额外重要提醒:

你现在直接把变量$username、$password拼进SQL语句里,存在严重的SQL注入风险!建议立刻改用PDO或者mysqli的预处理语句,举个PDO的例子:

// 假设已经建立了PDO连接
$stmt = $pdo->prepare("INSERT INTO Users (username, password, is_active, avatar) VALUES (:username, :password, :active, :avatar)");
$stmt->execute([
    'username' => $username,
    'password' => password_hash($password, PASSWORD_DEFAULT), // 顺便提下:密码一定要哈希存储!
    'active' => 0,
    'avatar' => 'empty'
]);

另外,密码绝对不能明文存入数据库,一定要用password_hash()加密后再存储!

内容的提问来源于stack exchange,提问作者Th3W31rd0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:40:05