从jQuery将日期插入mysql数据库

Posted

技术标签:

【中文标题】从jQuery将日期插入mysql数据库【英文标题】:Inserting date into mysql database from jQuery 【发布时间】:2016-04-11 02:21:51 【问题描述】:

我正在尝试将 jQuery datepicker 生成的日期保存到 mysql 数据库中。我正在使用 ajax,但我只能保存 1969-12-31。 mysql 字段需要一个日期值。

任何帮助都会很棒,非常感谢。

日期选择器和表单

<script>
$(document).ready(function()
$("#success").hide();
 $(function() 
    $( "#start" ).datepicker(

      defaultDate: "+1w",
      changeMonth: true,
      numberOfMonths: 3,
      onClose: function( selectedDate ) 
        $( "#end" ).datepicker( "option", "minDate", selectedDate );
      
    );
    $( "#end" ).datepicker(
      defaultDate: "+1w",

      changeMonth: true,
      numberOfMonths: 3,
      onClose: function( selectedDate ) 
        $( "#start" ).datepicker( "option", "maxDate", selectedDate );
      
    );
  );
  $("#submitMe").on("click",function()
    var formdata = $(this.form).serialize();
    $.post('dateinsert.php', formdata,
           function(data)
$("#message").html(data);
$("#success").hide();
$("#success").fadeIn(500); //Fade in  
);
return false;
  );
);
  </script>
</head>
<body>
<div class="container">
 <div id="success" /></div>
</br>
  <form> 
<label for="start">From</label>
<input type="text" id="start" name="start">
<label for="end">to</label>
<input type="text" id="end" name="end">
  <button type="submit" id="submitMe" class="btn btn-primary">Submit</button>
</form>

PHP

<?php
//include db configuration file
include_once("config.php");


 $start=$_POST['start'];
 $end=$_POST['end'];
 $starttime = date ("Y-m-d", $start);
 $endtime = date ("Y-m-d", $end);

 //Insert Data into mysql
$insert_row = $mysqli->query("INSERT INTO dates(start,end) VALUES ('$starttime','$endtime')"); 
if($insert_row)
echo 
         "success";

else echo "An error occurred!"; 
?>

【问题讨论】:

Your script is at risk for SQL Injection Attacks. 你的日期字段是什么类型的? startend 传输为什么,unix 时间戳An error occurred! 也不是一个很好的调试消息,请获取真正的错误消息。 php.net/manual/en/mysqli.error.php 日期 ("Y-m-d", strtotime ($start)); 您的表单是否因为未在 HTML 中指定而发出 POST 或 GET 请求? javascript创建的日期字符串是什么格式的? 【参考方案1】:

PHP date 函数要求第二个参数是 UNIX 样式的日期。 datepicker 的默认格式是 mm/dd/yy,这意味着当您调用 date 时,您传递的是一个无效值,结果是 date 函数的最早日期可以处理。

尝试使用:

$starttime = date ("Y-m-d", strtotime($start));
$endtime = date ("Y-m-d", strtotime($end));

请注意有关 SQL 注入的评论。

【讨论】:

这很棒,而且效果很好,并且指出了 SQL 注入。谢谢。

以上是关于从jQuery将日期插入mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章

将 jQuery datepicker 插入 MySQL 时遇到问题

如何使用 Node.js 从 Angular 将日期插入 MySQL DATETIME 列?

Jquery Datepicker - 从 mysql 数据库启用日期

从以下位置插入/转换日期:C++ 到 mySQL db

JAVA里面如何将字符串日期插入到MYSQL数据库

PHP mysql插入日期格式