Mysql NOW()没有更新db

时间:2013-11-04 14:49:36

标签: php mysql

我跟随查询将db表停车更新为列名纬度,经度,停车时间和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");
}

1 个答案:

答案 0 :(得分: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将 NOT 执行NOW() - ...日期数学运算,因此您试图将db字段值设置为无效日期。