2016-03-18 64 views
-1

數據庫佈局:PHP - 插入SQL錯誤

rid (auto increment) (primary key) (255) 
song (varchar) (120) 
artist (varchar) (30) 
by(varchar) (33) 
key(varchar) (60) 

PHP代碼:

$sql = "INSERT INTO Requests (song,artist,by,key) 
     VALUES ('$song','$artist','$by','$key')"; 
     if($this->db->query($sql)) 
     { 
      die("true"); 
     } 
     echo 'false: ' . $this->db->error; 

錯誤:

false: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'by,key) VALUES ('testsong','testing','kyle','example')' at line 1

幫助?我有很多年了,我看不出這個SQL有什麼問題?提前致謝!

+1

*「我已經探聽了很長時間,我看不出這個SQL有什麼問題嗎?」 - 「靠近'鍵)' - MySQL甚至會告訴你它在哪裏「啓動」。 –

+1

是的,所以我檢查了數據庫的列中正確的,檢查過的語法 - 抱歉,我不知道那些被截斷的單詞存在,我會嘗試知道我下一次從未教過的東西,不要擔心@ Fred-ii - – KDOT

回答

3

你需要回到蜱爲SQL相關的名稱,也bykey是MySQL的reserved words

INSERT INTO Requests (`song`,`artist`,`by`,`key`) 
+0

這就是原因哦,上帝..我把數據庫的列名從關鍵改爲api_key,並由誰和其工作,謝謝這 – KDOT

+0

會做但得等7分鐘的朋友:)請在7分鐘後回來查看;) – KDOT

+1

@ KyleE4K不客氣,很高興它解決了你的問題:) – Panda

6

您需要使用反引號爲BYKEY列,都是MySQL的保留字

$sql = "INSERT INTO Requests (`song`,`artist`,`by`,`key`) 
     VALUES ('$song','$artist','$by','$key')"; 

MYSQL Reserve Words List

注意:

我建議你,請不要使用保留字和關鍵字的表或列名稱。

2

嘗試此查詢的請求表中插入數據

$sql = "INSERT INTO Requests (`song`,`artist`,`by`,`key`) 
    VALUES ('".$song."','".$artist."','".$by."','".$key."')"; 
    if ($this->db->query($sql)) { 
     die("true"); 
    } 
    echo 'false: ' . $this->db->error; 

在問問題的查詢的主要問題是撇號的列名的兩側遺漏爲(歌曲,藝術家,通過密鑰)應該是('歌曲','藝術家','按',鍵')

+2

爲什麼OP應該「試試這個」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –