PHP-在mysql中插入日期

PHP-在mysql中插入日期,php,mysql,date,insert,format,Php,Mysql,Date,Insert,Format,我试图将日期插入mysql,但每次都失败,在phpmyadmin中显示为0000-00-00 我的日期格式类似于2012-08-06(yyyy-mm-dd),数据库中的日期字段类型为date $date = "2012-08-06"; mysql_query("INSERT INTO data_table (title, date_of_event) VALUES('". $_POST['post_title'] ."', '"

我试图将日期插入mysql,但每次都失败,在phpmyadmin中显示为
0000-00-00

我的日期格式类似于
2012-08-06
(yyyy-mm-dd),数据库中的日期字段类型为
date

$date = "2012-08-06";
mysql_query("INSERT INTO data_table (title, date_of_event) 
             VALUES('". $_POST['post_title'] ."',
                    '". $date ."')") or die(mysql_error()); 
尝试将
-
更改为
/
或将其删除,但无效

试试看

$date = "2012-08-06";
$date=date("Y-m-d",strtotime($date));

在MySQL中尝试
CAST
函数:

mysql_query("INSERT INTO data_table (title, date_of_event)
VALUES('". $_POST['post_title'] ."',
CAST('". $date ."' AS DATE))") or die(mysql_error()); 

除非要插入与“今天”不同的日期,否则可以使用CURDATE():


PS!请不要忘记清理您的MySQL输入,尤其是通过MySQL\u real\u escape\u string()

尝试先转换日期

$date = "2012-08-06";

mysql_query("INSERT INTO data_table (title, date_of_event)
               VALUES('" . $_POST['post_title'] . "',
                      '" . $date . "')") 
           or die(mysql_error());

当您陷入困境时如何调试SQL查询

打印您的查询并直接在mysql或phpMyAdmin中运行它

$date = "2012-08-06";
$query= "INSERT INTO data_table (title, date_of_event) 
             VALUES('". $_POST['post_title'] ."',
                    '". $date ."')";
echo $query;
mysql_query($query) or die(mysql_error()); 
这样可以确保问题不在PHP脚本中,而在SQL查询中

如何提交有关SQ查询的问题

确保您提供了足够的关闭

  • 表模式
  • 质疑
  • 错误消息是任意的

我建议使用时间戳(
time()
)而不是日期。并在显示时使用
date()
函数将其转换为任何格式。如果切换到PDO(或mysqli)@MakuraYami,您有两个问题(sql注入漏洞和使用旧的、即将弃用的扩展)都可以解决,为什么?你能解释一下吗?@mishu是的,我知道这两个问题:)只是我昨天发现了PDO和mysqli,我想完成编码,然后转换扩展并修复安全问题。@xperator,当你使用时间戳时,它会将你的时间节省为整数。这不会像你现在这样出现问题。它的优点是可以以任何日期格式写入,而不需要任何危险的字符串到日期函数。再试一次,有一个额外的逗号,它是您的字段的确切数据类型
date\u of\u event
?哎呀,这个逗号有点小问题。修复并立即生效:)为了安全/稳定,应使用准备好的声明。此代码段不应用于任何专业代码中。不,它不是当前日期,今天的日期只是一个示例:)为了安全性/稳定性,应使用准备好的语句。这段代码不应该用在任何专业代码中。我同意这里的@Mike,两者有什么区别?(除了让脚本更复杂一点)过去我遇到过同样的问题,我的工作方式也是如此。同样,我只是试着像xperator那样插入日期,插入了日期@xperator,你介意打印sql语句吗?这个答案毫无意义——它不会更改字符串。任何人都不应该实施这个非解决方案。只有代码的答案在堆栈溢出方面价值很低,因为它们对未来数千名研究人员的教育/授权作用甚微。为了安全性/稳定性,应该使用事先准备好的声明。此代码段不应用于任何专业代码中。为了安全性/稳定性,应使用准备好的语句。此代码段不应用于任何专业代码中。为了安全性/稳定性,应使用准备好的语句。此代码段不应用于任何专业代码中。此外,仅代码的答案在堆栈溢出上的价值很低,因为它们对未来数千名研究人员的教育/授权作用甚微。
$date = "2012-08-06";
$query= "INSERT INTO data_table (title, date_of_event) 
             VALUES('". $_POST['post_title'] ."',
                    '". $date ."')";
echo $query;
mysql_query($query) or die(mysql_error()); 
$date=$year."-".$month."-".$day; 
$new_date=date('Y-m-d', strtotime($dob)); 
$status=0;  
$insert_date = date("Y-m-d H:i:s");  
$latest_insert_id=0; 

$insertSql="insert into participationDetail (formId,name,city,emailId,dob,mobile,status,social_media1,social_media2,visa_status,tnc_status,data,gender,insertDate)values('".$formid."','".$name."','".$city."','".$email."','".$new_date."','".$mobile."','".$status."','".$link1."','".$link2."','".$visa_check."','".$tnc_check."','".json_encode($detail_arr,JSON_HEX_APOS)."','".$gender."','".$insert_date."')";