2013-10-23 62 views
-1

請有人幫助我。我的代碼存在問題,錯誤提示SQL語法錯誤,MySQL

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「東經=」 1" 行

這裏是我的代碼:

<?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 

---> //這錯誤的一個原因

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

?> 

謝謝!

+0

如果你強調這是造成錯誤,而不是具有穿過你的整個代碼滾動到找到行這將有助於其在底部 – NoLiver92

+0

@ NoLiver92我同意與你一樣,但在SQL語法錯誤的地方顯而易見的地方是錯誤。 – Loko

回答

4

。在你的插入查詢一個問題,它應該是這樣...

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


你必須需要按照以下插入查詢的語法。

INSERT語法

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

但值是Double not varchar – arianne

+0

然後省略引號。另外,如果括號有問題,可以使用'$ {query [q]}'來更好地聲明變量。更好的辦法是停止使用不推薦使用的'mysql_ *'函數,並使用mysqli或PDO對象和準備好的語句。 –

+1

@arianne你需要先學習mysql。 – Loko

2

您使用插入查詢錯誤。您正在使用它,如果它是在這條線的更新查詢:

$sql2= mysql_query("Insert into tbl_location SET latitude=$query[q],longitude=$query3[q]") 

使用這樣的:

INSERT INTO table_name (column1,column2,column3,...) 
VALUES (value1,value2,value3,...); 

來源:

http://www.w3schools.com/sql/sql_insert.asp

+2

根據HTTP: //dev.mysql.com/doc/refman/5.6/en/insert.html MySQL確實允許'INSERT INTO table SET column = value [,column2 = value2]'。必須承認我一直使用你所建議的格式,但是'SET'會起作用。 – danielpsc

+0

@danielpsc哇哈哈從來不知道!今天學到了一些東西。謝謝 – Loko

+0

是的,這對我來說也是新的! – danielpsc

2

試試這個行:

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

謝謝您的回答,先生,但返回值變爲0. – arianne

0

嘗試使用``幫助引擎瞭解

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

這是一個很大的幫助!謝謝你,先生。 – arianne