我跟随查询将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");
}
答案 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字段值设置为无效日期。