Php Mysql多插入查询

Php Mysql多插入查询,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,关于mysql数据插入,我遇到了以下问题。此处电子邮件字段不能为空。在执行查询1和查询2时,我们预期会出现错误。但是查询1给出错误,查询2给出成功 表结构 CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=

关于mysql数据插入,我遇到了以下问题。此处电子邮件字段不能为空。在执行查询1和查询2时,我们预期会出现错误。但是查询1给出错误,查询2给出成功

表结构

CREATE TABLE `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(100) NOT NULL,
 `email` varchar(100) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1
问题1:

INSERT INTO `users` (`id`, `name`, `email`) VALUES (NULL, 'manu', NULL);
结果:-1048-列“电子邮件”不能为空

问题2:

INSERT INTO `users` (`id`, `name`, `email`)
VALUES (NULL, 'manu', NULL),(NULL, 'Jose', NULL);
结果:-插入了2行

查询中有错误吗?如有任何想法,我们将不胜感激。

来自

将NULL插入已声明为NOT NULL的列。对于 多行INSERT语句或INSERT INTO。。。选择语句, 列被设置为列数据的隐式默认值 类型数字类型为0,字符串为空字符串 类型,以及日期和时间类型的“零”值。插入到。。。 SELECT语句的处理方式与多行插入相同 因为服务器不检查从选择到的结果集 查看它是否返回一行。对于单行插入,没有 在NOT NULL列中插入NULL时出现警告。相反 该语句因错误而失败


这种行为在SQL FIDLE上是不可复制的。第二个查询生成与第一个查询相同的错误。如果创建一个名为users2的新表,并使用完全相同的结构,然后再次尝试运行查询,会发生什么情况?在运行每个查询之后,查看表中的最终数据将是非常有趣的。我不明白为什么两个查询都不会失败。@GordonLinoff,我们在服务器版本中得到了这个结果:5.5.37-0ubuntu0.12.04.1-log ubuntusn您的SQL Server不是在严格模式下运行吗?在这种情况下,“varchar”字段的默认值是什么?对于ENUM以外的字符串类型,默认值是空字符串。对于枚举,默认值是第一个枚举值-