我正在使用jQuery datepicker datepicker的格式是这个 08/25/2012
我在插入数据库时出错,仅插入0000-00-00 00 00 00
我的密码是
<?php
$id = $_POST['id'];
$name = $_POST['name'];
$date = $_POST['date'];
$sql = mysql_query( "INSERT INTO user_date VALUE( '', '$name', '$date')" ) or die ( mysql_error() );
echo 'insert successful';
?>
我确定我的插入内容正确无误。
如日期和时间文字中所述:
MySQL可以识别
DATE
以下格式的值:
- 作为
'YYYY-MM-DD'
或'YY-MM- DD'
格式的字符串。允许使用“宽松”语法:任何标点符号都可以用作日期部分之间的分隔符。例如,'2012-12-31'
,'2012/12/31'
,'2012^12^31'
,和'2012@12@31'
是相等的。* 作为没有格式
'YYYYMMDD'
或分隔符'YYMMDD'
的字符串,前提是该字符串作为日期有意义。例如,'20070523'
和'070523'
被解释为'2007-05-23'
,但是'071332'
是非法的(它具有无意义的月份和日期部分),成为'0000-00-00'
。* 作为数字
YYYYMMDD
或YYMMDD
格式的数字,前提是该数字作为日期有意义。例如,19830905
和830905
被解释为'1983-09-05'
。
因此,该字符串'08/25/2012'
不是有效的MySQL日期文字。您有四个选择(按某种模糊的优先顺序,而没有您的要求的任何进一步信息):
altField
及其altFormat
选项来提供日期:<input type="hidden" id="actualDate" name="actualDate"/>
$( "selector" ).datepicker({
altField : "#actualDate"
altFormat: "yyyy-mm-dd"
});
或者,如果您希望用户看到YYYY-MM- DD
格式的日期,则只需设置dateFormat
选项即可:
$( "selector" ).datepicker({
dateFormat: "yyyy-mm-dd"
});
使用MySQL的STR_TO_DATE()
函数转换字符串:
INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
将从jQuery接收的字符串转换成PHP可以理解为日期的形式,例如一个DateTime
对象:
$dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
然后:
* 获取合适的格式化字符串:
$date = $dt->format('Y-m-d');
* 获取UNIX时间戳:
$timestamp = $dt->getTimestamp();
然后将其直接传递给MySQL的FROM_UNIXTIME()
函数:
INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
$parts = explode('/', $_POST['date']);
$date = “$parts[2]-$parts[0]-$parts[1]”;
您的代码容易受到SQL注入的攻击。 您 确实 应该使用准备好的语句,您将变量作为参数传递给该语句,这些参数无法通过SQL进行评估。如果您不知道我在说什么或如何解决它,请阅读Bobby Tables的故事。
此外,作为规定的出台对PHP手册章mysql_*
功能:
自PHP
5.5.0起不推荐使用该扩展,不建议编写新代码,因为将来会删除该扩展。相反,应使用mysqli或PDO_MySQL扩展名。另请参见MySQL
API概述,
以获取选择MySQL
API时的更多帮助。
DATETIME
或TIMESTAMP
列来保存日期值;我建议您考虑改用MySQL的DATE
类型。正如上文中DATE
,DATETIME
和TIMESTAMP
类型:该
DATE
类型用于具有日期部分但没有时间部分的值。MySQL检索并以'YYYY-MM- DD'
格式显示DATE值。支持的范围是'1000-01-01'
到'9999-12-31'
。该
DATETIME
类型用于包含日期和时间部分的值。MySQL检索并DATETIME
以'YYYY-MM-DD HH:MM:SS'
格式显示值。支持的范围是'1000-01-01 00:00:00'
到'9999-12-31 23:59:59'
。该
TIMESTAMP
数据类型被用于同时包含日期和时间部分的值。UTCTIMESTAMP
的范围是UTC。'1970-01-01 00:00:01'``'2038-01-19 03:14:07'
问题内容: 我在将日期正确插入数据库中时遇到问题。 我使用这种格式,并且正确回显,但是,当我插入 它似乎无法成功运行,时间仍然是00:00:00,如果您能找到很好的解决方案,谢谢。 问题答案: 如果要存储当前时间,请使用MYSQL的函数。 如果需要使用PHP进行格式化,请尝试
insertDate(int $row, int $column, int $timestamp[, string $dateFormat = 'yyyy-mm-dd hh:mm:ss', resource $formatHandler]) int $row $excel = new \Vtiful\Kernel\Excel($config); $dateFile = $excel->fil
问题内容: 如何使用PHP将MM / DD / YYYY格式的日期插入MySQL数据库? 问题答案: MySQL支持ISO-8601日期/时间值,没有其他值。如果您需要使用其他一些怪异的格式(例如,由于您的美国客户希望约会日期太短),则需要自己进行转换。 只是使用它,ISO-8601是一种真实的日期格式。
问题内容: 我正在使用Liferay 6.2,并想使用 liferay-ui:input-date 字段。现场本身工作正常。但是我想更改显示的日期格式 毫米/日/年 至 dd.mm.yyyy 但是该怎么做呢?我看不到有什么衣服可以设置这个… 问题答案: 我查看了输入日期标记库代码,如果要更改模式,则必须修改其代码。文件的路径:\ webapps \ ROOT \ html \ taglib \ u
问题内容: 我想向Access插入一个datetime值,但是出现此错误: net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc ::: 3.0.4数据异常:无效的日期时间格式 这是代码: 问题答案: 错误消息表明您的方法最终试图做类似的事情 并且由于以下两个原因将无法正常工作: UCanAccess希望日期文字被括在井号()中,并且 UCanAcce
问题内容: 我需要找出一种将带有字段的记录插入数据库的方法,但我陷入了困境。 有谁知道我该怎么做?现在我有类似的东西。 但是,当我运行类似这样的命令时,出现错误:值的字符串表示形式的语法不正确。 这是sql语句的样子: 谢谢 问题答案: 当然,这将使你的代码更好,但是要回答你的问题,你需要告诉的字符串表示形式。在中(你不指定数据库供应商的名称),使用以下函数将字符串日期转换为: