web-dev-qa-db-fra.com

AOP :: PARAM pour les dates?

Est-ce que certains PDO::PARAM_??? existe-t-il qui peut être utilisé pour des dates ou des horodatages?

Exemple de code:

$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

Lorsque vous écrivez une date dans une requête SQL, vous l'écrivez sous forme de chaîne; vous devez faire de même avec les instructions préparées et utiliser PDO::PARAM_STR, comme vous l'avez fait dans la partie de code que vous avez proposée.

Et pour le "timestamp", si par "timestamp" vous voulez dire:

  • Le type de données d'horodatage MySQL: c'est le même, vous le passerez comme string
  • Le PHP horodatage Unix, qui est un entier: vous lui passerez un int.
92
Pascal MARTIN

La simple création de la date à l'aide de la fonction de date php devrait résoudre ce problème pour vous.

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

Edit: Veuillez noter cependant que strtotime ( http://php.net/manual/en/function.strtotime.php ) ne peut pas gérer tous les types de formats de date.

16
Rolty

Nan. Traitez la date comme une chaîne.

6