我想在这里提供一些帮助。 我有一个注册表格,上面有姓名,姓氏,dob(出生日期),电子邮件等字段。 当我试图插入我的数据库时,一切正常,但对于dob。
我从三个选择菜单中获取它,例如$ _POST ['year'],$ _POST ['month'],$ _POST ['day'],但我还没有找到如何放这三个值在一个(dob)中,以便将其插入我的数据库中,而不是使用value 0000-00-00。
任何帮助将不胜感激。
答案 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']
,TIMESTAMP
或DATETIME
格式。