2013-06-02 1 views
-3

Когда я запускаю запрос базы данных в полученной форме, я получаю следующую ошибку.Ошибка синтаксиса MySQL в php-форме

Ошибка базы данных 1064: У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего MySQL-сервера, для правильного синтаксиса для использования рядом с «release =» 2013-05-27 19:33:29 », платформа =« ПК », описание =« Физическая головоломка Ga »по строке 1 Query: UPDATE games SET title = "Osmos", жанр = "Indie", release = "2013-05-27 19:33:29", platform = "PC", description = "Physics Puzzle Game", рейтинг = "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); 
+0

возможно дубликат [ошибку синтаксиса в связи с использованием зарезервированного слова в качестве имени таблицы или столбца в MySQL] (HTTP: //stackoverflow.com/questions/23446377/syntax-error-due-to-using-a-reserved-word-as-a-table-or-column-name-in-mysql) –

ответ

3

Пожалуйста, спасаясь от имени столбца release, так как он является зарезервированным ключевым словом. Если у вас есть привилегия изменить структуру таблицы, измените ее.

Вот MySQL Reserved Keywords List

Вы должны избежать этого, используя кавычку,

$query .= ',`release` = "'.prepareInsert($_REQUEST["release"]).'"'; 
3

«release» - это reserved word в MySQL. Вам нужно либо заключить это поле с обратными окнами, либо переименовать столбец в нечто e ЛСЭ.

0

Вам нужно бежать reserved words in MySQL как release с

обратными кавычками
$query .= ',`release` = "'.prepareInsert($_REQUEST["release"]).'"'; 
      ^-------^--------here 
Смежные вопросы