我使用Angular Bootstrap UI Datepicker的形式如下:
<!-- DATE -->
<div id="date-group" class="form-group" ng-class="{ 'has-error' : (errorDt) || (userForm.dt.$invalid && submitted) }">
<label>Date</label>
<div class="input-group">
<input type="text" class="form-control" datepicker-popup="{{format}}" name="dt" ng-model="formData.dt" is-open="datepickers.dt" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
<span class="input-group-btn">
<button class="btn btn-default" ng-click="open($event,'dt')"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</div> <!--Closing of input-group-->
<span class="help-block" ng-show="errorDt"> {{ errorDt }} </span>
<span ng-show="userForm.dt.$invalid && submitted" class="help-block">Date is required.</span>
</div>
它通过一个像这样的控制器:
$http.post('form-submit.php', $scope.formData)
.......
form-submit.php
将这个添加到数据库中,像这样:
$sql = 'INSERT INTO sample_column (date,name) VALUES (:date, :name)';
$stmt = $db->prepare($sql);
$stmt->execute(array(
'date' => $_POST['dt'],
'name' => $_POST['name']
));
}
mySql中的日期列是"date"类型,当脚本插入使用angular Bootstrap UI的日期拾取器从表单接收到的日期值时,sql中的值显示为0000-00-00。我假设这是因为日期选择器UI和SQL的日期类型列之间的日期格式不同。
所以我的问题是:
1)如果我插入angular Bootstrap UI的日期拾取器值,我需要在MySql列中使用的正确"类型"是什么?
2)如何在mysql中正确插入日期?
这就是我在最后解决这个问题所做的:
我发现angular Bootstrap UI的日期选择器是ISO8601格式。因此,我将日期格式从'ISO8601'转换为' date '在php文件中执行:
$date = '2014-03-13T09:05:50.240Z';
$fixed = date('Y-m-d', strtotime($date));
REF:如何在php中转换ISO8601到Date格式
然后使用MySQL查询将这个$fixed
值插入MySQL DATE类型字段。