我正在尝试更新sql datetime。我只是更新时间并为substr()编写一些脚本。现在当我更新小时和分钟时(d)在第一次编辑中重置为1,在第二次编辑中重置为0.
我使用php生成的html表和bootstrap-editable来使用Js和PHP编辑行。
为什么日期在db?中返回01,然后返回00?
实施例。 2012-02-23 00:00:00在第一次更新中成为2012-02-01 00:00:00。
HTML
<a href='#' id='".$row['id']."' class='usr_stamp_out' data-name='usr_stamp_out' data-type='text' data-pk='".$row['id']."' data-url='php/time.php' data-title='Stämpla ut..'>".substr($row['usr_stamp_out'],11,5)."</a>
PHP
$id = $_POST['pk'];
$updated_usr_stamp_out = $_POST['value'];
if($row){
//Substring datetime to 0000-00-00
$usr_stamp_out_date = substr($row['usr_stamp_out'],0,9);
//Add old date to updated time
$new_usr_stamp_out = $usr_stamp_out_date." ".$updated_usr_stamp_out;
//Prepare query
$query = "UPDATE table SET usr_stamp_out = :usr_stamp_out WHERE id = :id";
// Security measures
$query_params = array(':id' => $id,':usr_stamp_out' => $new_usr_stamp_out);
//Connect and execute
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex){
die("Failed to run query: " . $ex->getMessage());
}
}
答案 0 :(得分:0)
$usr_stamp_out_date = substr($row['usr_stamp_out'],0,9);
只获取日期的前九个字符,而不是获得正确日期所需的十个字符。
$usr_stamp_out_date = substr($row['usr_stamp_out'],0,10);
另一种方法是使用PHP的日期功能来获取日期:
$usr_stamp_out_date = date('Y-m-d', strtotime($row['usr_stamp_out']));