php Mysql INSERT INTO:无法再插入

时间:2016-09-29 07:46:29

标签: php mysql

我正在写新闻并将其插入我的数据库中,我已经在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年,它正在工作...... 有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您已转移到MySQL 5.7,它具有新的安全性和数据完整性检查:INT列无法再将STRING值保持为''

使用DEFAULT作为值,或者只是不添加INSERT中的列:

INSERT INTO articles (title, date, msg) VALUES (?, ?, ?);

INSERT INTO articles VALUES (DEFAULT, ?, ?, ?);

如果更改了列顺序,则更安全。

答案 1 :(得分:0)

最好不要将整数值放在引号中,这可能适用于您的timestamp列。

对于自动递增的列,例如id,您可以将其保留在查询之外,并添加要填写查询的列:

INSERT INTO `articles` (`title`, `timestamp`, `msg`) VALUES ('testeset', 1396642210, 'FUUUUUU');