Mysql NOW()没有更新db

Ale*_*lex 0 php mysql

我下面的这些更新db表查询停车场,以列名:纬度,经度,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");
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*c B 5

()从日期值中删除,例如

    $parking_time = "(NOW() - INTERVAL 122 MINUTE)";        
Run Code Online (Sandbox Code Playgroud)

应该

    $parking_time = "NOW() - INTERVAL 122 MINUTE";
Run Code Online (Sandbox Code Playgroud)

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

UPDATE [snip], parking_time = $parking_time,[snip]
                              ^--          ^-- no quotes
Run Code Online (Sandbox Code Playgroud)

这最终会产生

UPDATE ... parking_time = NOW() - INTERVAL 122 MINUTE, ....
Run Code Online (Sandbox Code Playgroud)

代替

UPDATE ... parking_time = '(NOW() - INTERVAL 122 MINUTE)' ...
Run Code Online (Sandbox Code Playgroud)

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