CURRENT_DATE()
est une fonction MySQL. Vous pouvez l'utiliser comme une chaîne littérale:
$sql_date = ($date == '') ?
"DATE_FORMAT(CURRENT_DATE(),'%d-%b-%y')" : "'$date'";
mysql_query("UPDATE foo SET date=$sql_date");
Cela suppose que $date
est sans danger pour l'insertion SQL.
Ou vous pouvez simplement utiliser PHP:
if (!$date) $date = date('%d-%M-%y');
mysql_query("UPDATE foo SET date='$date'");
Personnellement, je généralement utiliser la solution PHP car il rend plus facile d'utiliser la même requête avec les mêmes espaces réservés aux paramètres de sécurité (non utilisé dans cet exemple) indépendamment de la façon dont vous construisez la date.
dois-je modifier également le type de champ à ce jour et non timestamp
Si le temps est hors de propos, alors il devrait être un champ de date. Cependant, s'il s'agit d'un champ date/horodatage (et non un champ de texte), vous devez l'insérer au format AAAA-MM-JJ, et le code ci-dessus est inutile. C'est-à-dire, si le champ est du texte, alors le code ci-dessus pourrait être utile. Cependant, si vous stockez simplement une date dans un seul champ, vous devez utiliser un champ de date. Dans ce cas, le format que vous insérez doit toujours être en AAAA-MM-JJ. Lorsque vous récupérer les données, vous pouvez le formater comme vous le souhaitez pour l'affichage.
php n'a pas une telle fonction. –
Qui a élevé cette question boiteuse? –