php格式的MySQL语法错误

时间:2013-06-02 14:33:41

标签: php mysql

当我在表单中运行数据库查询时,我收到以下错误。

数据库查询失败 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);

3 个答案:

答案 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