当我在表单中运行数据库查询时,我收到以下错误。
数据库查询失败 1064:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'release =“2013-05-27 19:33:29”,platform =“PC”附近使用正确的语法,description =“物理拼图Ga'在第1行 查询:UPDATE游戏SET title =“Osmos”,genre =“Indie”,release =“2013-05-27 19:33:29”,platform =“PC”,description =“Physics Puzzle Game”,rating =“7 “,cost =”9.99“WHERE id = 1
我的代码发布在下面,我无法弄清楚语法中的错误在哪里。任何帮助将不胜感激。谢谢!
if ($id>0) {
$query = 'UPDATE games SET ';
$where = ' WHERE id='.prepareInsert($id);
} else {
$query = 'INSERT INTO games SET ';
$where = '';
}
$query .= 'title = "'.prepareInsert($_REQUEST["title"]).'"';
$query .= ',genre = "'.prepareInsert($_REQUEST["genre"]).'"';
$query .= ',release = "'.prepareInsert($_REQUEST["release"]).'"';
$query .= ',platform = "'.prepareInsert($_REQUEST["platform"]).'"';
$query .= ',description = "'.prepareInsert($_REQUEST["description"]).'"';
$query .= ',rating = "'.prepareInsert($_REQUEST["rating"]).'"';
$query .= ',cost = "'.prepareInsert($_REQUEST["cost"]).'"';
$query .= $where;
// do the query
$result = mysql_query($query)
or die("<p>Database query failed<br>" . mysql_errno() . ": " . mysql_error()."<br>Query: ".$query);
答案 0 :(得分:3)
'release'是MySQL中的reserved word。您需要将该字段用反引号括起来,或者将该列重命名为其他内容。
答案 1 :(得分:3)
请远离列名release
,因为它是保留关键字。如果您有权更改表的结构,请更改它。
以下是MySQL Reserved Keywords List
你需要使用反引号来逃避它,
$query .= ',`release` = "'.prepareInsert($_REQUEST["release"]).'"';
答案 2 :(得分:0)
您需要使用反引号{/ 1>来reserved words in MySQL转义release
$query .= ',`release` = "'.prepareInsert($_REQUEST["release"]).'"';
^-------^--------here