我正在编写新闻并将其插入到我的数据库中,我在 3 年前构建了代码并且运行良好,但我无法再插入,我不明白为什么:
$insert=mysqli_query($co,"INSERT INTO articles VALUES('','".addslashes(htmlentities($_POST['title']))."','".time()."','".nl2br(addslashes(htmlentities($_POST['msg'])))."')") or die("insert error: ".mysqli_error());
其中表文章获取结构(id:int(11) auto_increment,title:text,date:int(11),msg:text)
当我尝试时,我陷入了“插入错误”消息,但 mysqli_error() 消息是空的,所以我在 phpmyadmin 上尝试了一个假条目:
INSERT INTO articles VALUES('','testset','1396642210','FUUUUUU')
我得到#1366 - 不正确的整数值:第 1 行的“id”列的“” (但是 id 是自动递增的 ??:/)
(连接和数据库选择都正常) 我真的不明白发生了什么,我已经处理这个请求 2/3 年了,而且它正在工作...... 有什么想法吗?
最佳答案
您已迁移到 MySQL 5.7,该版本具有新的安全性和数据完整性检查:INT
列不能再将 STRING
值保存为 ''
.
使用DEFAULT
作为值,或者只是不要在INSERT
中添加该列:
INSERT INTO articles (title, date, msg) VALUES (?, ?, ?);
或
INSERT INTO articles VALUES (DEFAULT, ?, ?, ?);
如果更改列顺序,则安全性较差。
关于php Mysql 插入 : can't insert anymore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39764342/