我正在尝试将从日期选择器填充的文本框的值发布到我的数据库,但我不断发布1970-01-01的值。我研究了这个,看不出我出错的地方,下面是输入类型。
<label for="from">From:</label>
<input type="text" id="from" name="from">
<label for="to">To:</label>
<input type="text" id="to" name="to">
然后在表格中我有:
$fromdate = date('Y-m-d', strtotime($_POST['from']));
$todate = date('Y-m-d', strtotime($_POST['to']));
$request = mysql_query("INSERT INTO messages (fromdate, todate) VALUES ('$fromdate', '$todate')") or die(mysql_error());
有谁知道如何解决这个问题?
由于
答案 0 :(得分:1)
您要插入的是一个字符串。如果您将其插入DATE字段,则需要将其转换为日期。此语法将根据您使用的数据库而有所不同。 MySQL使用STR_TO_DATE,而Oracle使用TO_DATE。如果我知道您正在使用什么类型的数据库,我可以帮助您构建查询。
编辑:这是你的代码。您需要在查询本身内部利用MySQL STR_TO_DATE函数。
$request = mysql_query("INSERT INTO messages (fromdate, todate)
VALUES (STR_TO_DATE(\''.$fromdate.'\',\'%Y-%m-%d\'),
STR_TO_DATE(\''.$todate.'\',\'%Y-%m-%d\')")
or die(mysql_error());
此外,当你去制作时,用die()处理mysql错误并不是一个好习惯。它可能会提供您不希望他们拥有的恶意用户信息。
答案 1 :(得分:1)
strtotime()无法正确猜测格式的问题。
因此你可以:
重新格式化DatePicker的标准输出: option-altField - 您可以忽略常规字段并向db发送altField
在PHP输出中重新格式化
而strtotime($_POST['from']))
你可以使用这样的东西
$myDate = DateTime::createFromFormat('date-time-format-from-datepicker',$_POST['from'])->format('Y-m-d')
制作正确格式的&date-time-format-from-datepicker&#39;您可以使用php date formatting symbols table - 这需要一些时间,但必须有效