php Mysql插入:不能再插入

问题描述:

我正在写新闻并将其插入到我的数据库中,我已经建立了3年前的代码,它运行良好,但我不能再插入,我不明白为什么:php Mysql插入:不能再插入

$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,标题:文本,日期:INT(11),味精:文本)

当我尝试它我落在“插入错误”的消息,但mysqli_error()消息是空的,所以我尝试了一个伪造的条目在phpmyadmin上:

INSERT INTO articles VALUES('','testset','1396642210','FUUUUUU') 

我得到了#1366 - 不正确的整数值:''列1'的列'id' (但id是自动递增的? :/)

(连接和数据库选择都OK) 我真的不明白发生了什么,我正在处理这个请求2/3年,它正在工作... 任何想法?

+0

'和addslashes(ヶ辆($ _ POST [”标题']))'=>使用准备好的语句。他们会更安全。 – Xenos

+0

删除'1396642210'周围的引号,假设该列是整数类型。也许你已经升级了MySQL,并且它的语法实施已经改变了(它肯定适用于'GROUP BY')。 –

+0

您最近是否改变了可能影响此设置的任何内容? MySQL版本? PHP版本? Webserver版本?网络服务器?多次做同样的事情永远不会产生不同的结果,所以必须改变。 – apokryfos

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

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

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

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

这是如果列顺序变化不太安全。

+0

谢谢,这是真的我没有遵循版本更改,与DEFAULT合作,谢谢:) – Vertus

+0

欢迎。请考虑接受答案。 – Xenos

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

至于自动递增列,就像你id,你可以留下你的查询,并添加要填写您的查询中的列:

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