php mysql插入出生日期

时间:2011-06-22 09:17:50

标签: php mysql

我想在这里提供一些帮助。 我有一个注册表格,上面有姓名,姓氏,dob(出生日期),电子邮件等字段。 当我试图插入我的数据库时,一切正常,但对于dob。

我从三个选择菜单中获取它,例如$ _POST ['year'],$ _POST ['month'],$ _POST ['day'],但我还没有找到如何放这三个值在一个(dob)中,以便将其插入我的数据库中,而不是使用value 0000-00-00。

任何帮助将不胜感激。

6 个答案:

答案 0 :(得分:2)

  

dob我从3个选择菜单中得到它,比如$ _POST ['year'],$ _POST ['month'],$ _POST ['day']

只需验证并连接:

$yr=(integer)$_POST['year'];
$mo=(integer)$_POST['month'];
$da=(integer)$_POST['day'];
if (($yr>1910 && $yr<(integer)date('Y')) 
    && ($mo>0 && $mo<13)
    && ($da>0 && $da<32)) {
      $mysqldate=sprintf("%04d-%02d-%02d", $yr, $mo, $da);
} else {
    trigger_error('date is not valid');
}

答案 1 :(得分:1)

在rootatwc的回复基础上,插入数据库时​​的一个关键因素是DATETIME值必须像字符串一样被引用。

$name = "Sepp";
$surname = "Blatter";
$dob=$_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day'];

"insert into birthdays (name, surname, dob) values ('$name', '$surname', '$dob')"

你也会发现mysql非常宽容,例如June可以表示为-06-或-6 -

至于提取特定年份的所有条目,这很容易实现 - 无需将它们放入数据库的单独字段中:

select name from birthdays where YEAR(dob) = '1950';

修改

重新阅读这个问题,显然OP实际上使用的是DATE字段,嘿,OP,使用DATE字段 - 那么你可以浏览你的数据库并了解哪些日期而不必尝试解密10位数字......你可以使用Mysql附带的所有精彩日期功能......

答案 2 :(得分:0)

您希望它们如何存储在您的数据库中?您是希望它们作为UNIX时间戳还是其他格式?

如果您不知道格式化的方式,我们无法帮助您。

无论哪种方式,都应该使用mktime()转换为UNIX时间戳,然后在知道格式化时如何date()

答案 3 :(得分:0)

如果您的Apache位于Linux服务器上,则可以使用时间戳。为什么只在Linux服务器上?因为Linux了解负时间戳,如果你有人在1970年1月1日之前出生,你可能会需要它们。

$timestamp = mktime(0,0,0,$month,$day,$year);

将时间戳保存为int。

echo date('d.m.Y',$timestamp);

回应它。

答案 4 :(得分:0)

$timestamp=mktime(0,0,0,$_POST['month'],$_POST['day'],$_POST['year']);
$dob=date('Y-m-d',$timestamp);

$ dob值已准备好插入数据库

或者您可以这样做:

$dob=$_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day'];

但是您应该先将值转义为db,然后再使用PDO

答案 5 :(得分:0)

将DOB字段更改为`==<-` <- function (e1, e2, value) { cond <- e1 == e2 if(any(cond)) replace(e1, cond, value) else e1 } x <- 3; x == 100 <- 'xyz' x # [1] 3 html 5将为您生成一个datetimepicker。然后可以得到它<input type="date" name="dob" class="datetime" />
对于通用日期格式,数据库中的dob字段应为$_POST['dob']TIMESTAMPDATETIME格式。