-3

作成したフォームでデータベース クエリを実行すると、次のエラーが発生します。

データベース クエリが失敗しました 1064: SQL 構文にエラーがあります。Near 'release = "2013-05-27 19:33:29",platform = "PC",description = "Physics Puzzle Ga' at line 1 Query : UPDATE games SET title = "Osmos",genre = "Indie",release = "2013-05-27 19:33:29",platform = "PC",description = "物理パズルゲーム",rating = "7" 、コスト = "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);
4

3 に答える 3

3

'release' はMySQLの予約語です。そのフィールドをバッククォートで囲むか、列の名前を別の名前に変更する必要があります。

于 2013-06-02T14:35:26.250 に答える
3

release列名は予約済みのキーワードであるため、エスケープしてください。テーブルの構造を変更する権限がある場合は、変更してください。

MySQLの予約済みキーワード リストは次のとおりです。

バックティックを使用してエスケープする必要があります。

$query .= ',`release` = "'.prepareInsert($_REQUEST["release"]).'"';
于 2013-06-02T14:35:40.437 に答える
0

バッククォートのようにMySQLの予約語をエスケープする必要がありますrelease

$query .= ',`release` = "'.prepareInsert($_REQUEST["release"]).'"';
            ^-------^--------here
于 2013-06-02T14:35:35.827 に答える