Php 不同mysql服务器版本的默认值

Php 不同mysql服务器版本的默认值,php,mysql,Php,Mysql,我有一个php项目,其中我为mysqli扩展使用了一个自制的包装器。它适用于select、update和delete语句,但不适用于insert 例如,我有一个包含三个字段的表——id、名称、姓氏。 插入查询如下所示: $add = new SqlQuery(); $add->addField('id', 1); $add->addField('name', 'Alex'); $add->execute(); 而且它总是失败,因为sql server没有姓氏字段的默认值。 但

我有一个php项目,其中我为mysqli扩展使用了一个自制的包装器。它适用于select、update和delete语句,但不适用于insert

例如,我有一个包含三个字段的表——id、名称、姓氏。 插入查询如下所示:

$add = new SqlQuery();
$add->addField('id', 1);
$add->addField('name', 'Alex');
$add->execute();
而且它总是失败,因为sql server没有
姓氏
字段的默认值。
但由于一些神秘的原因,这段代码在生产服务器上工作

不同mysql服务器版本的默认值设置是否有差异?

或者,是否有任何选项或参数,我如何管理mysql服务器的此类行为?

您可以为姓氏字段指定默认值,也可以自己插入占位符值

否则,insert语句在MySQL端总是会失败。我不知道如果没有指定默认值,为什么它会在生产服务器上工作,但我认为在数据中留下这样的漏洞是一种不好的做法


因此,即使用户没有提供或没有指定您应该存储的特定数据,我建议您自己选择一个默认占位符-可以是纯空值或空字符串或其他任何内容,但如果设置正确,以后处理数据会更容易。

您可以为“姓氏”字段或自己插入占位符值

否则,insert语句在MySQL端总是会失败。我不知道如果没有指定默认值,为什么它会在生产服务器上工作,但我认为在数据中留下这样的漏洞是一种不好的做法


因此,即使用户没有提供或没有指定您应该存储的特定数据,我建议您自己选择一个默认占位符-可以是纯空值或空字符串或其他任何内容,但如果设置正确,以后处理数据会更容易。

这是数据库配置。属性称为sql_模式,更确切地说是-strict_trans_表或strict_all_表。若此选项中的任何一个被启用,数据库将在这种情况下抛出错误(look-question),若选项被禁用,则发出警告


有参考

这是数据库配置。属性称为sql_模式,更确切地说是-strict_trans_表或strict_all_表。若此选项中的任何一个被启用,数据库将在这种情况下抛出错误(look-question),若选项被禁用,则发出警告


有参考

这是第三方服务,我无法直接管理它(代码和sql)。我有它的源代码,我在那里找到了shell,这个shell在生产服务器中没有关闭,哈哈。所以,我在生产服务器代码中查找,它看起来像我的。这是第三方服务,我不能直接管理它(代码和sql)。我有它的源代码,我在那里找到了shell,这个shell在生产服务器中没有关闭,哈哈。所以,我在生产服务器代码中查找,它看起来像我的。但它对prod有效,但对我无效。