PDO :: PARAM для дат?

Есть ли PDO::PARAM_??? существуют, которые могут использоваться для дат или временных меток?

Образец кода:

 $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-запросе вы пишете ее как строку; вы должны сделать то же самое с подготовленными инструкциями и использовать PDO::PARAM_STR , как и в той части кода, которую вы предложили.

А для «метки времени», если по «метке времени» вы имеете в виду:

  • Тип данных timestamp MySQL: это то же самое, вы передадите его как string
  • Временная метка PHP Unix, которая является целым числом: вы передадите ей int .

Простое создание даты с использованием функции php date должно исправить эту проблему для вас.

$ handle-> execute (array (": date" => date ("Ymd H: i: s", strtotime ($ date)), PDO :: PARAM_STR));

Неа. Лечить дату как строку.

Вы должны рассматривать дату как строку, но вы можете создать функцию, чтобы проверить, является ли допустимой датой, прежде чем передать ее как параметр. Как это:

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