2014-07-09 3 views
0

Итак, я работаю над редактором для моего друга, и у меня возникает странная ошибка синтаксиса. Странно, потому что я в настоящее время создаю редактор NPC, используя оболочку редактора элементов, которую я сделал некоторое время назад. Это говорит, что я буквально просто изменил переменные и изменил все, что сказал «item» на «npc». Тем не менее, я получаю синтаксическую ошибку в случайном столбце, и я не могу узнать, что такое ошибка. Он находится в разделе редактирования редактора (lol). Удалите и создайте части редактора.Получение синтаксической ошибки, но я не могу найти ошибку синтаксиса

}else if($state == "edit") 
{ 
    $editsql = "UPDATE npcs SET name='" . $name . "', description='" . $description . "', gender=" . $gender . ", size=" . $size . ", dialog='" . $dialog . "', hair_style=" . $hair_style . ", hat=" . $hat . ", top=" . $top . ", bottom=" . $bottom . ", movement_pattern=" . $movement_pattern . ", behavior=" . $behavior . ", range=" . $range . ", uses_special_pokemon=" . $uses_special_pokemon . ", pokemon_1=" . $pokemon_1 . ", pokemon_2=" . $pokemon_2 . ", pokemon_3=" . $pokemon_3 . ", pokemon_4=" . $pokemon_4 . ", pokemon_5=" . $pokemon_5 . ", pokemon_6=" . $pokemon_6 . " WHERE id=" . $id; 

это ошибка:

Could not edit npc ID 3 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'range=0, uses_special_pokemon=0, pokemon_1=1, pokemon_2=1, pokemon_3=1, pokemon_' at line 1 

Я не могу вполне понять, что он взывает рядом «диапазон» и диапазон сама выглядит хорошо для меня, так что я не вижу ошибку вообще. Скорее всего, что-то совершенно очевидно, что я просто смотрю, как обычно, но я в тупике.

+0

Имеются ли все переменные, имеющие значения? любые нули вызовут синтаксическую ошибку mysql – Ray

+5

'Range' - это [зарезервированное слово MySQL] (http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html) .... если вы используйте зарезервированные слова в качестве имен столбцов, вы должны заключить их в обратные ссылки (') –

+3

' echo $ editsql; ' –

ответ

1

Вы хотите переименовать range в range_, так как Range является зарезервированным словом SQL. Вы можете заключить его в обратные ссылки, которые отличаются от одинарных кавычек. `VS '...

Если вы разделите запрос на несколько строк, ваше сообщение об ошибке сообщит вам, где оно не получилось ближе к тому месту, где была фактическая ошибка. Это один вкладыш, поэтому он говорит вам, ошибка существует в строке 1. Как правило, отдельных пунктах, т.е.

select xxxx 
from yyyy 
where xxxx = zzzz 

тогда вы будете знать, что это ошибка в синтаксисе и в каком пункте.

Смежные вопросы