MySQL数据库和导入日期问题

时间:2018-01-02 17:06:46

标签: php mysql datetime

好的,所以在我的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 Obj转换为字符串?该字段设置为保留'日期'所以我认为日期obj将是相同的东西?如何将其更改为字符串。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

$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中的某处,您尝试将结果转换为字符串。