首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止在已构建的PHP应用程序中的所有更新/插入操作中向日期类型列添加0000-00-00值

防止在已构建的PHP应用程序中的所有更新/插入操作中向日期类型列添加0000-00-00值
EN

Stack Overflow用户
提问于 2019-01-17 08:09:40
回答 1查看 416关注 0票数 0

我正在开发一个PHP - MySQL应用程序,在该应用程序中,我需要在date列中将所有存储的非日期值转换为,并且在今后避免将0000-00-00值插入到column.In短日期列时,DATE列应该只有有效的日期值或NULL.Suppose,我有一个表,其列类型为 DATE ,默认值为.When,我试图用非日期值将数据插入到这些列中,如果将日期值设置为空字符串或非有效日期字符串,则列将被设置为'0000-00-00'.So,而不是将值设置为NULL,我不希望插入值'0000-00-00',而是使用MySQLi包装器类库将MySQLi应用程序与MySQL database.The链接连接。

https://github.com/ThingEngineer/PHP-MySQLi-Database-Class

我很难在应用程序中的每个insert/update操作中检查日期列值确实是日期值,如果不是,将列的列或设置值取消为NULL.So,我试图在库使用的insert/update命令(所有insert/update命令都通过这个库)的位置执行一些操作,.But还有一些关于日期类型(可能必须从信息表中获取表元信息)的预定义信息,以便进行比较和相应的操作。

我已经在JDBC库中找到了一些类似的功能,比如在线程中(请参见5 in的答案)。

https://dba.stackexchange.com/questions/139896/null-instead-0000-00-00-000000-in-mysql-5-7

那么,在JDBC驱动程序中是否有类似于zeroDateTimeBehaviour = convertTONull选项的东西,我们可以在PHP连接接口中使用,或者在DB级别上使用一些转换选项。

我正在使用PHP5.6和MySQL版本5.6。

编辑-许多人指出这个问题已经有一个答案在

MySQL,如何插入空日期

但是,所有的答案都不会导致正确的解决方案(至少在我的例子中不是这样),因为许多答案解释了如何在每个插入/更新级别解决问题,而不是当应用程序已经有了大量的插入/更新命令时,并且我希望尽可能地修改当前的应用程序。

JDBC驱动程序中的zeroDateTimeBehaviour = convertTONull选项

EN

回答 1

Stack Overflow用户

发布于 2019-01-17 09:00:00

尝试设置SET GLOBAL sql_mode = '';

如果这对你没有帮助,我建议你在ALLOW_INVALID_DATES SQL模式的完整列表上读一读。希望这能解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54231519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档