Php SQL语法错误,MySQL

Php SQL语法错误,MySQL,php,mysql,sql,Php,Mysql,Sql,谁来帮帮我。我的代码有问题,错误显示 您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行“longitude=”附近使用的正确语法 这是我的密码: <?php include 'connect.php'; $id=isset($_SESSION['id']); $sql = mysql_query("SELECT sms_text FROM sms_in where id = '$id'") or die(mysql_error()); $gps= mysql

谁来帮帮我。我的代码有问题,错误显示

您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行“longitude=”附近使用的正确语法

这是我的密码:

<?php
include 'connect.php';

$id=isset($_SESSION['id']);

$sql = mysql_query("SELECT sms_text FROM sms_in where id = '$id'") or die(mysql_error());
$gps= mysql_fetch_array($sql);

preg_match('/lat:(\d+\.\d+) /', $gps, $matches);
unset($matches[0]);
$params = array(
    'f' => 'q',
    'q' => implode(',', $matches),
    'z' => 16,
);
$query1 = '//maps.google.com/maps?' . http_build_query($params);

$query = array();
$urlParts = parse_url($query1);
parse_str($urlParts['query'], $query);

//echo $query['q'];
//Get longitude

$sql4 = mysql_query("SELECT sms_text FROM sms_in where id = '$id'") or die(mysql_error());
$gps1= mysql_fetch_array($sql);

preg_match('/long:(\d+\.\d+) /', $gps1, $matches1);
unset($matches1[0]);
$params1 = array(
    'f' => 'q',
    'q' => implode(',', $matches1),
    'z' => 16,
);
$query2 = '//maps.google.com/maps?' . http_build_query($params1);

$query3 = array();
$urlParts1 = parse_url($query2);
parse_str($urlParts1['query'], $query3);

//echo $query3['q'];
//$sql5="select id 

谢谢!

您的插入查询中有一个问题,应该是这样的

INSERT INTO tbl_location (latitude,longitude) VALUES ('$query[q]','$query3[q]')

您必须遵循以下插入查询语法

语法

INSERT
    [INTO] tbl_name
    [PARTITION (partition_name,...)] 
    [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

您使用的insert查询错误。您使用它的方式就像此行的update查询一样:

$sql2= mysql_query("Insert into tbl_location SET latitude=$query[q],longitude=$query3[q]")
$sql2= mysql_query("INSERT INTO tbl_location (latitude,longitude) VALUES ('" . $query['q'] . "','" . $query3['q'] ."')") or die(mysql_error());
像这样使用它:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
资料来源:

试试这句话:

$sql2= mysql_query("Insert into tbl_location SET latitude=$query[q],longitude=$query3[q]")
$sql2= mysql_query("INSERT INTO tbl_location (latitude,longitude) VALUES ('" . $query['q'] . "','" . $query3['q'] ."')") or die(mysql_error());

尝试使用``帮助引擎理解

$sql=mysql_query("INSERT INTO `tbl_location`"."(latitude,longitude)". "VALUES". "('$query[q]','$query3[q]')";

如果您突出显示了导致错误的行,而不是必须滚动整个代码才能在bottom@NoLiver92我同意你的观点,但是在sql语法错误中,错误是显而易见的。但是值是双精度的,而不是varchart。然后省略引号。另外,如果括号有问题,请使用
${query[q]}
更好地声明变量。更好的做法是停止使用不推荐使用的
mysql*
函数,并使用mysqli或PDO对象和准备好的语句。@arianne正如我所说的,插入查询语法有问题,无论是双精度还是双精度varchar@GeraldSchneider我省略了前面的引语,先生,我只是正在尝试它是否能工作。@SumitBijvani还没有,先生。根据MySQL允许
插入到表集合column=value[,column2=value2]
。我必须承认我一直使用你建议的格式,但是
集合将起作用。@danielpsc Ow-haha从来都不知道!今天学到了一些东西。谢谢,这对我来说也是新的!@danielpsc我不明白,你怎么能插入表集合=“。。。“如果没有一个WHERE to use SET?SET将完全无用?它们只是等价物。
INSERT-INTO-table(field,field2)value(value,value2)
插入表集合field=value,field2=value2
相同。我的猜测是,它的存在只是为了插入和更新可以使用相同的结构。谢谢您的回答,先生,但返回值变为0。这是一个很大的帮助!谢谢您,先生。