2017-02-14 54 views
-1

我正在編寫一個PHP腳本,以便在本地主機上使用mySQL在WampServer上使用。localhost上的mySQL語法錯誤

我試圖存儲在PHP文件到數據庫中輸入一些經/緯度值,但我得到這個錯誤

「您的SQL語法錯誤;檢查符合手冊你的MySQL服務器版本使用附近的正確語法「-ordinates值(」 1.24242' ,‘0.52512’)」第1" 行

這是我的代碼

<?php 

require "init.php"; 
$Longitude = "1.24242"; 
$Latitude = "0.52512"; 

$sql_query = "insert into co-ordinates values('$Longitude', '$Latitude');"; 

if(mysqli_query($con, $sql_query)) 
{ 
    echo "<h3> Data Insertion Sucess.... </h3>"; 
} 

else 
{ 
    echo "Data insertion error... ".mysqli_error($con); 
} 

?> 

與‘的規格’我的數據庫 - https://gyazo.com/3c0edf48ee89fef9dc25e12af693b4e2

我很新這一切,所以任何幫助將不勝感激。

+1

'協調'不是一個有效的表名,除非你用反引號將其轉義。該錯誤是**非常具體**。 – tadman

+0

**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **絕不**將'$ _POST'或'$ _GET'數據直接放入查詢中,如果有人試圖利用您的錯誤,這會非常有害。 – tadman

+0

不要將重要的代碼作爲外部鏈接發佈,尤其是截圖混亂無比的垃圾,就像任何人都無法點擊的按鈕一樣。如果模式很重要,請改爲發佈「SHOW CREATE TABLE」。 – tadman

回答

0

假設你有這樣一行PHP代碼:

$Long-itude = "1.24242"; 

該變量名是無效的。爲什麼不?由於-通常是負運算符,因此將其用作變量名稱的一部分會產生解析歧義。它是一個包含破折號的變量名嗎?或者它是變量$Long減去常數itude的值?

這與SQL相同。就這麼簡單。許多標點符號也是運算符,因此,它們通常不在標識符名稱中。

如果你確實需要使用標點符號或空白作爲列名的一部分,那麼SQL幾乎不會有其他編程語言所做的事情:它允許它,如果你劃定你的標識符。

$sql_query = "insert into `co-ordinates` values(...)"; 
+0

PHP也允許這樣做:'$ {'Long-itude'} =「1.24242」;' –

+0

哇,我忘了這個。無論如何,在SQL和PHP中,如果你避免使用這種標識符,你會感謝你自己! –