web-dev-qa-db-ja.com

日付の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 ();
69
vitto

SQLクエリで日付を記述する場合、文字列として書き込みます。準備したステートメントでも同じことを行い、提案したコードの部分で行ったように、PDO::PARAM_STRを使用する必要があります。

また、「タイムスタンプ」の場合、「タイムスタンプ」の意味は次のとおりです。

  • MySQLタイムスタンプデータタイプ:同じです。stringとして渡します
  • PHP Unixタイムスタンプ、これは整数です。intを渡します。
92
Pascal MARTIN

Php日付関数を使用して日付を作成するだけで、この問題を解決できます。

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

編集:ただし、strtotimehttp://php.net/manual/en/function.strtotime.php )はすべての種類の日付形式を処理できるわけではないことに注意してください。

16
Rolty

いや。日付を文字列として扱います。

6