我遇到了日期字段的问题。当我创建新记录或更新现有记录时,日期字段将保存为000-00-00.
当我选择任何一天时使用日期选择器,它存储在值为(0000-00-00).
的表中
数据库字段是日期类型。
我下载了PHP示例代码,使用示例sql创建了一个数据库,并将RecordDate字段更改为可编辑,我遇到了同样的问题。
DB value: 0000-00-00
JTable shows: 1899-11-30
我该怎么办? 请帮忙 这是代码 jquery代码: -
$(document).ready(function () {
var assignmentid= "<?php echo $assignmentid; ?>";
//Prepare jTable
$('#PeopleTableContainer').jtable({
title: 'Table of people',
actions: {
listAction: 'teacherfill.php?action=list&aid="<?php echo $assignmentid; ?>"',
createAction: 'teacherfill.php?action=create&aid="<?php echo $assignmentid; ?>"',
updateAction: 'teacherfill.php?action=update&aid="<?php echo $assignmentid; ?>"',
deleteAction: 'teacherfill.php?action=delete&aid="<?php echo $assignmentid; ?>"'
},
fields: {
lecture_id: {
key: true,
create: false,
edit: false,
list: false
},
lecture_no: {
title: 'Lecture No',
width: '40%'
},
lecture_date: {
title: 'Lecture Date',
width: '20%',
type:'date'
}
}
});
//Load person list from server
$('#PeopleTableContainer').jtable('load');
});
php代码: -
if($_GET["action"] == "update" && $_GET["aid"])
{
$assignmentid=$_GET['aid'];
$updatedlecno=$_POST["lecture_no"];
//$updatedlecdate=date("Y-m-d",strtotime($_POST['lecture_date']));
$updatedlecdate=$_POST['lecture_date'];
$lecid=$_POST["lecture_id"];
$q="UPDATE lecture_schedule SET lecture_no=$updatedlecno,lecture_date=$updatedlecdate WHERE (lecture_id=$lecid)";
$result = mysqli_query($conn,$q);
if($result)
{
$er="No error";
}
else{
$er1=mysqli_error($conn);
$er="error";
}
//Return result to jTable
$jTableResult = array();
$jTableResult['Result'] = "OK";
//$jTableResult['status'] = $er;
//$jTableResult['date'] = $updatedlecdate;
print json_encode($jTableResult);
}
答案 0 :(得分:1)
首先,不要使用mysql_ *函数。不推荐使用这些函数。请改用mysqli_ *或PDO。
其次,不要将原始$_POST
数据放入SQL语句。 Bobby Tables会解释。改为使用参数化查询。
第三,检查$_POST['lecture_date']
是否实际包含值。在您的示例数据中,它是Lecture_date
- 案例很重要。
第四,SQL查询中的日期仍然是字符串。您需要将值包装在SQL的单引号中以正确处理它。否则,它会将2016-07-29
视为2016 - 7 - 29 = 1980
。当你提出我的第三点时,你应该得到一个错误。