mysql数据库及导入日期问题

tyky79it  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(361)

好的,在mysql数据库中,我使用了一个日期字段。我使用php检查用户是否年满18岁。然后我尝试将所有表单信息输入mysql数据库,以创建一个用户。我一直得到一个空白屏幕(除了我的导航栏和页脚)用户没有被保存到数据库中,错误日志显示这个错误:php可恢复致命错误:类datetime的对象无法转换为字符串。。。。

$age = checkAge($_POST["birthday"]);
if($age != false) 
{
  $ageSuc = "All Good!";
}
else ....

function checkAge ($data)
{
  $dateObj = new DateTime($data);
  $ageLimit = new DateTime('-18 years');
  if ($dateObj > $ageLimit)
  {
   return false;
  }
  else 
  {
    $dateObj->format('Y-m-d');
    return $dateObj;
  }
}

所以问题是,在mysql接受datetime对象之前,是否需要将其转换为字符串?该字段设置为保存“dates”,所以我认为date obj应该是相同的东西?如何把它变成一个字符串。

1hdlvixo

1hdlvixo1#

$age = checkAge($_POST["birthday"]);
  if($age != false)
     {
       $ageSuc = "All Good!";
     }
  else ....

 function checkAge ($data)
    {
       $dateObj = new DateTime($data);
       $ageLimit = new DateTime('-18 years');
       if ($dateObj > $ageLimit)
         {
           return false;
          }
          else 
           {
             return $dateObj->format('Y-m-d');
            }
      }

如果需要字符串结果,则必须返回 format() 结果,而不是对象本身。
但是您指定的错误并不是在这个代码中直接触发的,而是在 else ,尝试将结果转换为字符串。

fkvaft9z

fkvaft9z2#

您正在返回datetime对象,因为 format 函数返回一个字符串,它不会更改对象。尝试返回格式化字符串的format函数的结果。

return $dateObj->format('Y-m-d');

相关问题