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 ();
66 голосов | спросил vitto 3 MarpmWed, 03 Mar 2010 23:20:10 +03002010-03-03T23:20:10+03:0011 2010, 23:20:10

5 ответов


0

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

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

  • Тип данных метки времени MySQL: он тот же, вы передадите его как string
  • Временная метка PHP Unix, которая является целым числом: вы передадите ей int.
ответил Pascal MARTIN 3 MarpmWed, 03 Mar 2010 23:24:00 +03002010-03-03T23:24:00+03:0011 2010, 23:24:00
0

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

  

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

ответил Rolty 12 Maypm14 2014, 15:27:48
0

Неа. Обрабатывать дату как строку.

ответил Your Common Sense 3 MarpmWed, 03 Mar 2010 23:21:25 +03002010-03-03T23:21:25+03:0011 2010, 23:21:25
0

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

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);
}
ответил Diego Andrade 23 MarpmThu, 23 Mar 2017 18:35:02 +03002017-03-23T18:35:02+03:0006 2017, 18:35:02
0

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

//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 ();
ответил hector teran 12 42015vEurope/Moscow11bEurope/MoscowThu, 12 Nov 2015 22:09:27 +0300 2015, 22:09:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132