2016-03-18 65 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。 –