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 ();