0

私のコードの更新部分にエラーがあります。このエラーが表示されます。SQL構文にエラーがあります。'(reqdate = '2012-12-17'、lat1 = '26 .18355762868919'、long1 = '50 .30387832641602'、lat'の1行目で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

これは更新に関する私のコードです:

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のとを削除し(ます)

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());

また、関数の代わりにPDOまたは関数を使用することを検討してください。mysqli_*mysql_*

于 2012-12-16T21:52:54.147 に答える