我想把出生日期放到数据库中。所以我写了这个函数:
function setAge($day, $month, $year)
{
$date= strtotime("$day $month $year");
mysql("UPDATE controlpanel
SET date_of_birth=$date
WHERE=".this->$userID) or die(mysql_error());
}
我不确定这是否正确,或者是更新日期的最佳方式。字段变量是DATE,..我不插入日期,我只是更新它..它会导致错误吗?这是将日期从php发布到mysql的最佳方法吗?
答案 0 :(得分:1)
您应该将日期格式化为'yyyy-mm-dd',以便将SQL语句插入MySQL中。
答案 1 :(得分:1)
这里有很多错误。
WHERE
子句中指定要比较的字段。您需要执行类似WHERE userID = 123
的内容。mysql_real_escape_string()
。strtotime()
是错误的。您可以使用"{$year}-{$month}-{$day}"
轻松手动格式化它。只是为了强调:
答案 2 :(得分:0)
mysql_query( "UPDATE `controlpanel`
SET `date_of_birth`='".$year."-".$month."-".$day."'
WHERE `userid`=".this->$userID);
您的代码中存在相当多的代码错误。你甚至尝试过它吗?
无论如何,此代码不再需要strtotime
调用。
答案 3 :(得分:0)
您不需要自定义函数,PHP具有预定义日期函数。
$date= date("Y-m-d", strtotime(mktime(0, 0, 0, $month, $day, $year)));
如果需要,可以使用strtotime()。
请参阅文档以获取更多详细信息http://php.net/manual/en/function.mktime.php
答案 4 :(得分:0)
kolink是正确的..在数据库日期数据类型格式是年 - 月 - 日,您还可以在时间戳中存储日期和时间,它将更容易处理..通过时间戳,您可以更灵活地处理日期和时间..
答案 5 :(得分:0)
如果您查看PHP手册,您会看到strtotime()返回整数,更具体地说是Unix timestamp。如果您查看MySQL手册,您会看到DATE列被处理为字符串。
除了阅读文档之外,您还可以看到一些简单的调试出了问题。如果使用var_dump()打印查询并在您喜欢的MySQL客户端中运行它,您将看到您的行使用无效值更新(或者您收到错误消息,具体取决于服务器设置)。
现在,有很多方法可以创建格式正确的字符串。您似乎将各个组件保存到PHP变量中,因此您可以使用sprintf():
sprintf('%04d-%02d-%02d', $year, $month, $day)
更新:我正在添加一些其他版本以取悦@Col。弹片:
sprintf('%s-%s-%s', $year, $month, $day)
"$year-$month-$day"
$year . '-' . $month . '-' . $day