php 7.2 正在阻止插入记录而不添加所有表的字段

标签 php mysql

我将我的 php 版本从 7.1 升级到 7.2。

在我的 phpmyadmin 中,我有一张这样的表:

CREATE TABLE `images` (
  `image_id` int(11) NOT NULL,
  `image_name` varchar(255) CHARACTER SET utf8 NOT NULL,
  `image_title` varchar(255) CHARACTER SET utf8 NOT NULL ,
  `image_alternative` varchar(255) CHARACTER SET utf8 NOT NULL ,
  `image_folder` varchar(255) CHARACTER SET utf8 NOT NULL ,
  `image_status` int(11) NOT NULL ,
  `date` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

image_id 是唯一必填字段。其余的都是可选的,可以为空。 当我尝试插入记录时:

INSERT INTO `images`(`image_name`,`image_status`) VALUES ("new image",1);

我收到此错误

 MySQL said: Documentation #1364 - Field 'image_title' doesn't have a default value

为了解决此问题,我必须在表中为所有字段添加预定义值,或者在查询中添加所有字段(即使它们为空)。

INSERT INTO `images`(`image_name`, `image_title`, `image_alternative`, `image_folder`, `image_status`) 
VALUES ("new image,"","","",0)

我知道 php 7.x 比旧版本更安全,并且他们正在努力随着时间的推移变得更好。但是如何解决这个问题而不需要更改我的所有表或查询。谢谢您

最佳答案

为了便于将来引用,请记住以下一些提示:

  1. 要使列成为可选列,只需将 NOT 关键字替换为 DEFAULT 关键字即可。请记住:“默认空”是可选的。 “Not Null”为必填项。
  2. image_id 列应该是 AUTO_INCRMENT 字段。只要 image_id 列名称及其值未显式插入到查询中,添加它即可防止 INSERT INTO ... SQL 语句失败。 (OP 中的两个 INSERT INTO 查询都缺少这些项目。)
  3. image_id 列也是该表的PRIMARY KEY。应该加上这个。

经过这些简单的编辑后,表格应如下所示:

CREATE TABLE `images` (
`image_id` int(11) NOT NULL AUTO_INCREMENT,
`image_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`image_title` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`image_alternative` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`image_folder` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`image_status` int(11) DEFAULT NULL,
`date` datetime DEFAULT current_timestamp(),
 PRIMARY KEY (`image_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

关于php 7.2 正在阻止插入记录而不添加所有表的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50756844/

相关文章:

mysql - CakePHP 是在代码级别处理 FK,还是我也应该将 FK 添加到我的数据库中?

mysql - Leetcode---部门最高薪水

php - 在已经包含其他页面的页面中包含 .js 和 .css 的最有效方法是什么?

php - 我无法在 laravel 中获取 Controller

PHP&MYSQL - 向数据库插入数据失败

php - 如何在AWS Elastic Beanstalk Docker容器中记录PHP错误

mysql - SQL查询水平记录

php - 如何在MySQL数据库中保存上传的图片名称

mysql - 在 "Column Name"上创建外键时出错(检查数据类型)?

php - 如何使用复选框/ slider 运行 php 代码