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”作为日期

  • 您已将Datepicker配置为以
    yy-mm-dd
    格式输出日期,但在MySQL函数
    STR_to_-date
    或PHP DateTime方法
    createFromFormat
    中将其解析为
    %M%d,%Y
    。那没有道理

  • 因为
    yyyy-mm-dd
    是MySQL表示日期的原生格式,所以根本不需要任何转换。只需将从Datepicker获得的数据保存到DB中


    因此,我将从以下内容开始:

  • 用PHP检查您从表单中获得的内容,例如打印
    $\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"
    });