2013-11-04 45 views
0

我下面的查詢該更新db表停車場列名緯度,經度,parking_time和let_parked。因此,它將更新所有列,但它不會更新NOW()的parking_time列。你知道爲什麼嗎 ?Mysql的NOW()不更新數據庫

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"); 
} 
+0

取出單引號''parking_time''到'$ parking_time' –

+0

@JorgeCampos它的工作。謝謝。 – Alex

回答

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字段值設置爲無效日期。