developer tip

날짜에 대한 PDO :: PARAM?

optionbox 2020. 11. 5. 07:55
반응형

날짜에 대한 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 ();

SQL 쿼리에 날짜를 쓸 때 문자열로 작성합니다. 준비된 문장에 대해서도 똑같이해야하며 PDO::PARAM_STR제안한 코드 부분에서했던 것처럼를 사용해야 합니다.

"타임 스탬프"의 경우 "타임 스탬프"가 의미하는 경우 :

  • MySQL 타임 스탬프 데이터 유형 : 동일합니다. string
  • 정수인 PHP Unix 타임 스탬프 : int.

php date 함수를 사용하여 날짜를 생성하기 만하면이 문제가 해결됩니다.

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

편집 : 그러나 strtotime( http://php.net/manual/en/function.strtotime.php ) 모든 종류의 날짜 형식을 처리 할 수는 없습니다.


아니. 날짜를 문자열로 취급하십시오.


날짜를 문자열로 처리해야하지만 매개 변수로 전달하기 전에 유효한 날짜인지 확인하는 함수를 만들 수 있습니다. 이렇게 :

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 ("Y-m-d H:i:s")), PDO::PARAM_STR);
$statement->execute ();

참고 URL : https://stackoverflow.com/questions/2374631/pdoparam-for-dates

반응형