找不到我的SQL语法错误

时间:2012-09-19 19:44:04

标签: php mysql

我在SQL语法中一直收到此错误,但我找不到它的原因。我的数据库有一个名为“match”的表,其中包含以下列:
hometeam - varchar(45)
awayteam - varcahr(45)
homegoals - int(11)
awaygoals - int(11)
体育场 - varchar(45)
datetime - datetime

这是我在php中的代码

$query = "INSERT INTO match(hometeam, awayteam, homegoals, awaygoals, stadium, datetime) VALUES('$home', '$away', $homescore, $awayscore, '$arena', $datetime)";
if(!mysql_query($query)) 
    {
        echo mysql_error()."<br />";
    }

我尝试打印出来的查询对我来说很好看:

INSERT INTO match(hometeam, awayteam, homegoals, awaygoals, stadium, datetime) VALUES('Everton', 'Newcastle', 2, 2, 'Goodison Park', 1347937200)

这是我从mysql_error()得到的错误:

  

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'match(hometeam,awayteam,homegoals,awaygoals,stadium,datetime)附近使用正确的语法VALUES('Evert'在第1行

5 个答案:

答案 0 :(得分:4)

matchmysql reserved word。你需要将它括在反引号(`)

答案 1 :(得分:2)

$query = "INSERT INTO `match` (hometeam, awayteam, homegoals, awaygoals, stadium, `datetime`)
VALUES('$home', '$away', $homescore, $awayscore, '$arena', $datetime)";

我刚刚在你的表名和日期时间列名中添加了`因为匹配是一个保留字。我做了约会时间,因为它也可能是一个保留字,但我不确定。

答案 2 :(得分:1)

表名必须至少有一个空格到下一个'('或用``

包围

试试这个:

$query = "
 INSERT INTO `match` 
   (hometeam, awayteam, homegoals, awaygoals, stadium, datetime) 
 VALUES
   ('$home', '$away', $homescore, $awayscore, '$arena', $datetime)";

答案 3 :(得分:1)

我认为match是MySQL中的保留字。

答案 4 :(得分:0)

更改此

$query = "INSERT INTO match(hometeam, awayteam, homegoals, awaygoals, stadium, datetime) VALUES('$home', '$away', $homescore, $awayscore, '$arena', $datetime)";

 $query =mysql_query("INSERT INTO `match`(hometeam,awayteam,homegoals,awaygoals,stadium,`datetime`)
VALUES('$home','$away','$homescore','$awayscore','$arena','$datetime')");

使用,mysql_query,单引号插入所有变量并避免使用空格。