我对php很陌生,我有个问题。我正在做一个网页来接收来自android应用程序的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‘值('',’)值(userID,date,time,lat,long,alt)值('','')。
发布于 2011-11-10 22:59:51
long被解析为数据类型,而不是字段名。
要解决这个问题,请在字段名周围加上引号,如下所示:
$SQL = $SQL . " (`userID`, `date`, `time`, `lat`, `long`, `alt`) VALUES ";发布于 2011-11-10 22:58:22
LONG是mySQL中的保留字。
或者将字段名放在backticks中:
$SQL = $SQL . " (`userID`, `date`, `time`, `lat`, `long`, `alt`) VALUES ";或者重命名这个字段。
而且,您的脚本容易受到SQL注入的攻击。你想在直播前解决这个问题。
发布于 2011-11-10 22:58:40
long是MySQL中的一个保留字。使用lon,或者用‘字符’引用它。
https://stackoverflow.com/questions/8087538
复制相似问题