从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. 你的日期字段是什么类型的?start
和 end
传输为什么,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 列?