需要其他的眼睛来寻找我的错误.php接收GPS坐标


need other eyes to look for my mistake. php to recieve GPS coordinates

我是php的新手,遇到了一个问题。我正在开发一个网页,从安卓应用程序接收gps坐标。我得到一个关于SQL语句的错误,这里是代码:

?php
ini_set('display_errors',1); 
 error_reporting(E_ALL);
 date_default_timezone_set('America/New_York');
$script_tz = date_default_timezone_get();
if (strcmp($script_tz, ini_get('date.timezone'))){
    echo 'Script timezone differs from ini-set timezone.';
} else {
    echo 'Script timezone and ini-set timezone match.';
}

$usr = "bikemap";
  $pwd = "pedalhard";
  $db = "test";
  $host = "localhost";
  $cid = mysql_connect($host,$usr,$pwd);
  if (!$cid) { echo("ERROR: " . mysql_error() . "'n"); }
  $userID = $_POST['userID'];
  $date = $_POST['date'];
  $time = $_POST['time'];
  $lat = $_POST['lat'];
  $long = $_POST['long'];
  $alt = $_POST['alt'];
   mysql_select_db("test");
  $SQL = " INSERT INTO gpsdata ";
$SQL = $SQL . " (userID, date, time, lat, long, alt) VALUES ";
$SQL = $SQL . " ('$userID', '$date', '$time', '$lat','$long','$alt') ";
$result = mysql_query("$SQL");
if (!$result) {
    echo("ERROR: " . mysql_error() . "'n$SQL'n"); }


mysql_close($cid); 
?>

这是我收到的错误:

错误:您的SQL语法有错误;查看手册与您的MySQL服务器版本相对应,以便使用正确的语法靠近第1行的'long,alt(VALUES('','','',''('INSERT INTOgpsdata(userID,日期,时间,lat,long,alt(值('','','','','',''(

LONG是mySQL中的保留字。

将字段名称包装在反勾号中:

$SQL = $SQL . " (`userID`, `date`, `time`, `lat`, `long`, `alt`) VALUES ";

或重命名字段。

此外,您的脚本容易受到SQL注入的攻击。你想在上线之前解决这个问题。

long被解析为数据类型,而不是字段名。

要解决此问题,请在字段名称周围加引号,如:

$SQL = $SQL . " (`userID`, `date`, `time`, `lat`, `long`, `alt`) VALUES ";

long是MySQL中的一个保留字。使用lon,或使用`characters引用。

LONG在我的SQL中是一个保留字,您需要将其用backticks 括起来