首页 >数据库 >mysql教程 >如何修复 PHP 和 MySQL 中的'0000-00-00 00:00:00”日期插入错误?

如何修复 PHP 和 MySQL 中的'0000-00-00 00:00:00”日期插入错误?

Barbara Streisand
Barbara Streisand原创
2024-12-31 17:44:18303浏览

How to Fix

PHP MySQL 插入日期格式:解决无效日期问题

将日期插入 MySQL 数据库有时会导致数据库出现错误尽管代码中的日期格式正确,但仅插入“0000-00-00 00 00 00”。当 MySQL 无法识别日期格式时,就会出现此问题。

要解决此问题,必须遵循 MySQL 接受的指定日期格式:

  • 字符串格式: 'YYYY-MM-DD' 或 'YY-MM-DD' 可选分隔符。
  • 数字格式: YYYYMMDD 或 YYMMDD,前提是它代表有效日期。

在给定的代码中,日期以以下格式接收: 08/25/2012',MySQL 无法识别。因此,我们需要将日期格式修改为支持的格式之一。

解决日期格式问题的选项:

  1. 配置日期选择器: 使用 altField 和 <code data-type="javascript">altFormat 指定传递日期的格式到 PHP 脚本。例如,<code data-type="javascript">altFormat: "yyyy-mm-dd".
  2. 使用 STR_TO_DATE() 函数:使用 STR_TO_DATE() 将日期字符串转换为 MySQL 支持的格式功能。示例:

    INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
  3. 使用 DateTime 对象: 将日期字符串转换为 PHP DateTime 对象,获取格式化字符串,并在插入查询中使用它。示例:

    $dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
    $date = $dt->format('Y-m-d');
    
    INSERT INTO user_date VALUES ('', '$name', '$date')
  4. 操作日期字符串: 手动操作日期字符串,将其转换为有效的 MySQL 格式。示例:

    $parts = explode('/', $_POST['date']);
    $date = "$parts[2]-$parts[0]-$parts[1]";
    
    INSERT INTO user_date VALUES ('', '$name', '$date')

其他注意事项:

  • 避免 SQL 注入: 使用带有参数化的准备好的语句查询以防止安全
  • 使用 MySQL 5.5 建议:使用 mysqli 扩展或 PDO_MySQL 而不是已弃用的 mysql_* 函数。
  • 考虑 DATE 类型:使用如果您只需要存储日期而无需存储时间,则使用 MySQL DATE 类型而不是 DATETIME 或 TIMESTAMP信息。

以上是如何修复 PHP 和 MySQL 中的'0000-00-00 00:00:00”日期插入错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn