PHP - 插入SQL错误

时间:2016-03-18 12:12:55

标签: php mysql

数据库布局:

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:您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以便在第1行使用“by,key”VALUES('testsong','testing','kyle','example')'附近的正确语法

帮助?我已经沉溺了好几年了,我看不出那个SQL有什么问题?提前谢谢!

3 个答案:

答案 0 :(得分:6)

你需要对BYKEY列使用反引号,两者都是mysql保留字

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

MYSQL Reserve Words List

旁注:

我建议你,请不要对表名或列名使用保留字和关键字。

答案 1 :(得分:3)

您需要返回与SQL相关的名称,同时bykey是MySQL reserved words

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

答案 2 :(得分: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;

问题查询中的主要问题是列名称两侧的撇号错过了(歌曲,艺术家,按,键)应该是('歌曲','艺术家','通过',键')< / p>