这个查询有什么问题?

时间:2011-03-22 13:10:22

标签: php mysql

固定

$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");

所以我做错了,因为如果我自己使用其中任何一个,那么行会更新,但是当它们组合使用时不会更新。

任何帮助都会非常感谢。

1 个答案:

答案 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')