固定
$goodQuery = "INSERT INTO table (Lat, Lon, Description, CurrentDate, CurrentTime) VALUES ('$lat', '$lon', '$desc', '$date', '$time')
ON DUPLICATE KEY UPDATE Description = CONCAT(Description, ', $desc'), CurrentDate = '$date', CurrentTime = '$time'";
我试图在使用PHP和MySQL找到重复后更新一行:
我的表:
纬度| Lon |说明|日期|时间| SubmitCount |
我的(Lat,Lon,Date)索引设置为唯一,如果找到所有这些内容,我想更新行的描述,时间和日期。
我使用的查询是:
$goodQuery = "INSERT INTO table (Lat, Lon, Description, Date, Time) VALUES ('$lat', '$lon', '$desc', '$date', '$time')ON DUPLICATE KEY UPDATE Description = CONCAT(Description, ' ,'$desc'), Date = '$date', Time = '$time";
$ desc,$ date和$ time使用:
获得 $desc = mysql_real_escape_string($_POST['desc']);
//Get date
$date = gmdate("Y-m-d");
//Get time
$time = gmdate("H:i:s");
所以我做错了,因为如果我自己使用其中任何一个,那么行会更新,但是当它们组合使用时不会更新。
任何帮助都会非常感谢。
答案 0 :(得分:3)
您似乎在CONCAT()
中有额外或不足的引号。看起来你试图通过连接空格来在现有描述之后添加描述,但空白空间没有得到结束引用。试试这个:
$goodQuery = "INSERT INTO table (Lat, Lon, Description, Date, Time) VALUES ('$lat', '$lon', '$desc', '$date', '$time')ON DUPLICATE KEY UPDATE Description = CONCAT(Description, ' ','$desc'), Date = '$date', Time = '$time";
CONCAT(Description, ' ,'$desc')
// Becomes
CONCAT(Description, ' ','$desc')