Php 在MySQL中插入jQuery日期
我一直在尝试以下链接所示的示例: 下面是我的代码示例:Php 在MySQL中插入jQuery日期,php,jquery,mysql,Php,Jquery,Mysql,我一直在尝试以下链接所示的示例: 下面是我的代码示例: <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { /** Variables */ $pdate = isset($_POST['pdate']) ? $_POST['pdate'] : ''; $org = mysqli_escape_string($dbcon, trim($_POST['org'])); $city = mysqli_esc
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
/** Variables */
$pdate = isset($_POST['pdate']) ? $_POST['pdate'] : '';
$org = mysqli_escape_string($dbcon, trim($_POST['org']));
$city = mysqli_escape_string($dbcon, trim($_POST['city']));
$state = isset($_POST['state']) ? $_POST['state'] : '';
$rio = mysqli_escape_string($dbcon, trim($_POST['rio']));
/** Query */
$q = "INSERT INTO `survey` (id, pdate, org, city, state, rio, date_created)
VALUES (NULL, STR_TO_DATE('$pdate', '%M %d, %Y'), '$org', '$city', '$state', '$rio', NOW())";
?>
/** Changing Datepicker Value **/
jQuery(document).ready(function($) {
/** Datepicker for the Form */
$('.selector').datepicker('option', 'dateFormat', 'yy-mm-dd');
});
$pdate = "2015-09-28"; Displays like that according to the <?php echo format ?>
提交表单后,我得到了未定义的变量索引
我现在遗漏了什么?您没有发布最重要的信息-实际的错误消息-因此我只能猜测,出了什么问题。以下是我的猜测:
pdate
,则您没有这样的表单控件。这可能是雷森,为什么你的数据库中有“0000-00-00”作为日期yy-mm-dd
格式输出日期,但在MySQL函数STR_to_-date
或PHP DateTime方法createFromFormat
中将其解析为%M%d,%Y
。那没有道理yyyy-mm-dd
是MySQL表示日期的原生格式,所以根本不需要任何转换。只需将从Datepicker获得的数据保存到DB中
因此,我将从以下内容开始:
$\u POST
数组中的内容:var\u dump($\u POST)
pdate
,并且包含格式为yyyy-mm-dd
插入日期格式的最简单方法是使用jQuery日期格式执行以下操作,请参见-
你的$pdate是什么格式的?你到底想要什么??如果您正在查找日期格式转换,请查看此链接,。该链接具有日期()的所有可能格式。希望这对您有所帮助。当您使用
DateTime
类where/for what/how?警告:当使用mysqli
时,您应该使用参数化查询并将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为这样会创建严重的错误。切勿将$\u POST
数据直接放入查询中。手动调用转义函数会导致严重的错误,正如您在这里看到的通过raw发送的$\u POST['state']
。请注意那个页面上关于逃跑的多个警告。@鸣人,我已经复习过了,请再看一次我的例子。对于1号,我没有因为使用isset而得到未定义的错误。对于No 2,我的查询我没有使用STR_TO_DATE,只是插入到。。。。。。。值(NULL,$pdate',NOW());对于步骤3,当我进行Var_转储时,日期显示为2015-09-22。这就是我被困的地方。好吧,那你为什么不喜欢这种约会方式呢?正如我在回答中所写的那样,这正是MySQL用来存储日期的格式(yyy-mm-dd
),因此您根本不需要任何转换。事实上,我能够让它正常工作,我精简了所有内容,并更改了jquery的日期格式,而且保存了正确的方式。很好,我很高兴您解决了它。请将答案标记为已接受的答案,以便其他人可以轻松找到。
$dt = DateTime::createFromFormat('m/d/Y', $_POST['pdate']);
$pdate = $dt->format('Y-m-d');
`jQuery`
$( ".selector" ).datepicker({
dateFormat: "yy-mm-dd"
});