Php 设置用户DOB和x27格式的正确方法;当使用PDO插入时为s

Php 设置用户DOB和x27格式的正确方法;当使用PDO插入时为s,php,mysql,pdo,Php,Mysql,Pdo,我在使用PDO将一个简单的$dob表单输入和数据库插入数据类型为date的mysql表时遇到了一些奇怪的问题 输入表单(示例): 但它却没有日期?那么,仅仅2013-12年工作正常,但这一天总是-01 这与日期的选择格式有关吗?的第二个参数 date() 是一个整数值(自然数),而不是以破折号分隔的字符串。读这本书 就像你想做这样的事情: date('Y-m-d', strtotime( $year."-".$month."-".$day )); 另一端:此操作构造一个日期字符串,并将其

我在使用PDO将一个简单的
$dob
表单输入和数据库插入数据类型为
date
的mysql表时遇到了一些奇怪的问题

输入表单(示例):

但它却没有日期?那么,仅仅2013-12年工作正常,但这一天总是-01

这与日期的选择格式有关吗?

的第二个参数

  date()
是一个整数值(自然数),而不是以破折号分隔的字符串。读这本书

就像你想做这样的事情:

date('Y-m-d', strtotime( $year."-".$month."-".$day ));

另一端:此操作构造一个日期字符串,并将其传递给date(),后者反过来返回相同的日期字符串;-)

首先,PHP
date()
命令只接受要转换为指定格式的正式UNIX时间戳。其次,虽然表单中有名为
dob month
dob day
dob year
的变量,但看起来您似乎试图在PHP处理脚本中的变量
$month
$day
$year
中使用它们。 为什么不从一个好的PHP
date
教程开始,解释日期字符串日期对象UNIX时间戳之间的区别呢。阅读PHP的
strotime()
函数和mySQL的
DATE\u FORMAT()
函数。当你完成这些事情的时候,你应该得到足够的信息返回并提交一个经过莫尔教育的问题

编辑/附加信息

<select name="dob-month">
    <option value="1">January</option>
    <option value="6">June</option>
    <option value="12">December</option>
</select>
<select name="dob-day">
    <option>1</option> // Same here - stick to a single digit
    <option>15</option>
    <option>31</option>
</select>
<select name="dob-year">
    <option>2013</option>
</select>
使用此代码

$birthdate = $_POST['dob-year']."/".$_POST['dob-month']."/".$_POST['dob-date'];
$birthdate = date('Y-m-d', strtotime($year."-".$month."-".$day));
$birthdate = date('Y-m-d', mktime(0,0,0,$month,$day,$year));
而不是这个代码

$birthdate = $_POST['dob-year']."/".$_POST['dob-month']."/".$_POST['dob-date'];
$birthdate = date('Y-m-d', strtotime($year."-".$month."-".$day));
$birthdate = date('Y-m-d', mktime(0,0,0,$month,$day,$year));

生日是什么字段类型?$year、$month和$day是什么,可能您需要strotime()?请尝试使用
strotime($day$month$year”)
,并注意语言环境对此的处理。你的问题让我想起了一点:而且,谢谢你的讽刺,我编辑了php,因为帖子是通过一个控制器传递的,我不想把每个人都搞糊涂,然后忘了把它放回去。我理解这些类型,即使是
$birthdate=date('Y-m-d',strottime($year.-“$month.-”$day))我还是有问题?这不是讽刺。这仍然是一个措辞拙劣的问题,几乎没有足够的支持代码来找出什么;您的脚本正在进行中
strotime()
可能不够可靠,无法在这种情况下使用。您可能需要多次使用
mktime()
.echo
$birthdate
,看看它是否因为
strotime()而被删除
转换。在将日期插入
日期时
是否应使用格式为
'Y-m-d'
的日期时间戳或字符串?@Silver89否将整数值作为第二个参数传递给date()。整数值是UNIX时间戳。作为UNIX时间戳的当前时间的来源是time()。因此,date('Y-m-d',time())就可以了。
$birthdate = date('Y-m-d', strtotime($year."-".$month."-".$day));
$birthdate = date('Y-m-d', mktime(0,0,0,$month,$day,$year));