2017-06-15 41 views
1

我做了这个功能检查是否是一个日期时间PHP

function checkNullToInsert($data){ 

     if($data){ 
      if($data->format('Y-m-d H:i:s')){ 
       return "'".$data->format('Y-m-d H:i:s')."'"; 
      }else{ 
       return "'".$data."'"; 
     } 
     else { 
      return 'NULL'; 
     } 
    } 

,也未能对

如果($数据 - >格式( 'YMD H:I:S')`

,但我可以看到错误(是不是我的服务器)。
什么改变了我必须做的,使该功能的工作。如果它的一个日期,它应该返回的日期,如果没有一个日期时间返回数据,如果它的null返回一个字符串'n '值'

+0

是'$ data' DateTme'的'的实例,或者是一些其他类?而且既然你说你可以看到错误,你真的需要把它包含在问题中! –

+0

'$ data'它的一个sql请求的字段可以是一个日期时间,int,字符串.. –

+0

你也错过了在内部if语句中关闭'}' –

回答

0

您当前的代码尝试使用任何验证为truthy的值作为DateTime实例。下面是关于什么样的价值观被认为是真/假手册:http://php.net/manual/en/types.comparisons.php

首先,你需要检查变量DateTime一个实例。我们可以做到这一点与instanceof操作:

function checkNullToInsert($data){ 
    if ($data){ 
     // Check if the variable is an instance of DateTime. 
     if ($data instanceof DateTime) { 
      return "'".$data->format('Y-m-d H:i:s')."'"; 
     } else { 
      return "'".$data."'"; 
     } // You were also missing this closing brace 
    } 
    else { 
     return 'NULL'; 
    } 
} 

下面是instanceof的文档:http://php.net/manual/en/internals2.opcodes.instanceof.php

相关问题