PDO :: PARAM的date?

是否有一些PDO::PARAM_??? 存在哪些可用于date或时间戳?

示例代码:

 $sql = "UPDATE my_table SET current_date = :date WHERE id = 43"; $statement = $pdo->prepare ($sql); $statement->bindParam (":date", strtotime (date ("Ymd H:i:s")), PDO::PARAM_STR); $statement->execute (); 

在SQL查询中写入date时,您将其作为string写入; 您必须对准备好的语句执行相同的操作,并使用PDO::PARAM_STR ,就像您在所提议的代码部分中所做的一样。

而对于“时间戳”,如果用“时间戳”表示:

  • MySQL时间戳记数据types:它是一样的,你将它作为一个string传递
  • PHP的Unix时间戳,是一个整数:你会传递一个int

使用phpdate函数简单地创builddate应该为您解决这个问题。

():date(“Ymd H:i:s”,strtotime($ date)),PDO :: PARAM_STR));

不。 将date视为string。

您必须将date视为string,但是您可以创build一个函数来检查是否为有效date,然后将其作为parameter passing。 喜欢这个:

 function checkValidDate($date, $format = "dd-mm-yyyy"){ if($format === "dd-mm-yyyy"){ $day = (int) substr($date,0,2); $month = (int) substr($date, 3,2); $year = (int) substr($date, 6,4); }else if($format === "yyyy-mm-dd"){ $day = (int) substr($date,8,2); $month = (int) substr($date, 5,2); $year = (int) substr($date, 0,4); } return checkdate($month, $day, $year); } 

这对我有效。

 //MS SQL $sql = "UPDATE my_table SET current_date = GETDATE() WHERE id = 43"; $statement = $pdo->prepare ($sql); //$statement->bindParam (":date", strtotime (date ("Ymd H:i:s")), PDO::PARAM_STR); $statement->execute ();