2010-03-03 1 views
60

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

Пример кода:

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

ответ

80

При написании даты в SQL-запросе вы пишете ее как строку; вы должны сделать то же самое с подготовленными заявлениями и использовать PDO::PARAM_STR, как и в той части кода, которую вы предложили.

И для "метки времени", если под "метки времени" вы имеете в виду:

  • для MySQL метка типа данных: это то же самое, вы будете проходить его как string
  • The PHP Unix timestamp, которая является целым числом: вы передадите ее int.
+1

Что в случае ms точности? – ManuelSchneid3r

4

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

15

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

$ защемление> выполнить (массив (": дата" => дата ("У-м-д Н: I: S", StrToTime (дата $)), PDO :: PARAM_STR));

-3

Это сработало для меня.

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

Вы не очень помогаете, не указав, как привязать параметр к дате сгенерированного PHP вместо функции mysql GETDATE ... –

-1

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

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); 
} 
Смежные вопросы