我想在相同的查询/操作中更新'duration'和'end_time'字段。'end_time'字段填充当前时间,'duration'字段从'start'和'end_time'字段之间的不同分钟填充。当我执行此更新时,'duration'字段的结果为0。如何获得end_time和duration在同一时间。
这是PHP代码:
<?php
include("koneksi.php");
$id = $_GET['id'];
$start = gmdate("Y-m-d H:i:s", time()+60*60*7);
$end_time = gmdate("Y-m-d H:i:s", time()+60*60*7);
$duration = $_POST['duration'];
$query = "update billing set end_time='$end_time', duration = TIMESTAMPDIFF(MINUTE, '$start', '$end_time') where id='$id'";
$result = mysql_query($query);
if ($result){
echo '<script language="javascript">window.location = "../?p=los"</script>';
} ?>
持续时间设置为0,因为$start
和$end_time
相同。
考虑你的代码:
$start = gmdate("Y-m-d H:i:s", time()+60*60*7);
$end_time = gmdate("Y-m-d H:i:s", time()+60*60*7);
$query = "... TIMESTAMPDIFF(MINUTE, '$start', '$end_time') ...";
因为$start == $end_time
,差值总是0。
您可能希望使用已经存储在数据库中的start_time
的值,而不是最近创建的php变量$start
。也许像这样:
$query = "
update billing set
end_time='$end_time',
duration = TIMESTAMPDIFF(MINUTE, start_time, '$end_time')
where id='$id'
";
其中start_time
是数据库中的一个列。
注意: mysql_*函数已被弃用,并且您容易受到SQL注入的影响。考虑使用mysql或pdo,并使用准备好的语句。
谢谢你的回答,这是我的修复代码
$query = "update billing set , end_time='$end_time',
duration = TIMESTAMPDIFF(MINUTE, start, '$end_time'),
cost = TIMESTAMPDIFF(MINUTE, start, '$end_time') * (SELECT basiccost from costed where id ='1')
where id='$id'";