0

我的代码在更新部分有错误,它向我显示了这个错误:你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '( reqdate= '2012-12-17',lat1= '26.18355762868919',long1= '50.30387832641602',lat' 附近使用正确的语法

这是我关于更新的代码:

if(mysql_fetch_array($query1))
{
$datex = strtotime(date('Y-m-d H:i:s'))+36000;
$time = date('H:i:s', $datex);
$date=date('Y-m-d', $datex);
$result=mysql_query("SELECT * FROM sensorusers  WHERE uid='$uid'");

mysql_query("UPDATE requests SET ( reqdate= '$date',lat1= '$lat1',long1= '$lng1',lat2= '$lat2',long2='$lng2',lat3='$lat3',long3='$lng3',lat4='$lat4',long4='$lng4',inout='$type',time='$time') WHERE  sid= '$drivers'") or die(mysql_error());

$Alpha  = @mysql_query($query2,$db); //Execute Query

}
4

2 回答 2

0

只需删除括号,它肯定会执行,例如

UPDATE requests 
SET   reqdate = '$date',
      lat1    = '$lat1',
      long1   = '$lng1',
      lat2    ='$lat2', 
      long2   = '$lng2', 
      lat3    = '$lat3',
      long3   = '$lng3',
      lat4    = '$lat4',
      long4   = '$lng4',
      `inout` = '$type',    // << RESERVED KEYWORD
      time    = '$time' 
WHERE  sid    = '$drivers'

INOUT是一个保留的关键字。您应该使用反引号将其转义。

请注意,此代码易受攻击SQL Injection,请阅读下面的文章以了解如何防止它,

于 2012-12-16T21:51:54.943 回答
0

语法错误

删除 SQL 中的(and )

mysql_query("UPDATE requests SET `reqdate` = '$date',lat1= '$lat1',long1= '$lng1',lat2= '$lat2',long2='$lng2',lat3='$lat3',long3='$lng3',lat4='$lat4',long4='$lng4',inout='$type',time='$time' WHERE  sid= '$drivers'") or die(mysql_error());

另外,考虑使用PDOormysqli_*函数而不是mysql_*函数。

于 2012-12-16T21:52:54.147 回答