0

我进行了以下查询,该查询将 db 表 parks 更新为列名:纬度、经度、 parking_time和 let_parked。所以它更新了所有列,但没有使用 NOW()更新parking_time列。你知道为什么吗 ?

if(isset($_POST["update"]) && $_POST["update"]==true)
{
    if($userid == "1")
    {   
        $parking_time = "(NOW() - INTERVAL 122 MINUTE)";        

        $results = $mysqli->query("UPDATE parkings SET latitude = '$mLat', longitude = '$mLng', parking_time = '$parking_time', let_parked = '1' WHERE locId = '$mId' ");
    }
    elseif($userid == '0')
    {
        $parking_time = "NOW() - INTERVAL 220 MINUTE"; 

        $results = $mysqli->query("UPDATE parkings SET latitude = '$mLat', longitude = '$mLng', parking_time = '$parking_time' WHERE locId = '$mId' ");
    }


    if (!$results) {  
      //header('HTTP/1.1 500 Error: Could not Update Markers! $mId'); 
      echo "coudld not update marker."  . mysql_error();
      exit();
    } 

    exit("Updated successfully Done! $userid, $mId");
}
4

1 回答 1

5

()从您的日期值周围删除,例如

    $parking_time = "(NOW() - INTERVAL 122 MINUTE)";        

应该

    $parking_time = "NOW() - INTERVAL 122 MINUTE";

然后'从您使用该日期时间的地方删除:

UPDATE [snip], parking_time = $parking_time,[snip]
                              ^--          ^-- no quotes

这最终会产生

UPDATE ... parking_time = NOW() - INTERVAL 122 MINUTE, ....

代替

UPDATE ... parking_time = '(NOW() - INTERVAL 122 MINUTE)' ...

您的版本正在生成一个包含一些文本的字符串。但由于该文本被视为字符串,MySQL不会执行NOW() - ...日期数学运算,因此您试图将 db 字段值设置为无效日期。

于 2013-11-04T14:53:05.297 回答