我在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行
答案 0 :(得分:4)
match是mysql 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,单引号插入所有变量并避免使用空格。