Есть ли 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
, как и в той части кода, которую вы предложили.
А для «метки времени», если по «метке времени» вы имеете в виду:
string
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 ();