获取语​​法错误,但我找不到语法错误

时间:2014-07-09 21:04:56

标签: php sql

所以我正在为我的一个朋友编辑一个编辑器,我收到一个奇怪的语法错误。这很奇怪,因为我目前正在使用我编辑的Item编辑器的shell创建一个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

我无法弄清楚它在“范围”附近呼唤的是什么?'和范围本身对我来说很好,所以我根本没有看到错误。它很可能是一件非常明显的事情,我只是像往常一样俯视,但我很难过。

1 个答案:

答案 0 :(得分:1)

您需要将range重命名为range_,因为Range是SQL保留字。你可以将它括在反引号中,它与单引号不同。 'VS'......

如果您将查询分成多行,您的错误消息将告诉您它更接近实际错误的位置。这是一个单行,所以它告诉你第1行存在错误。通常,单独的条款,即

 select xxxx
 from yyyy
 where  xxxx = zzzz

然后你就会知道这是语法和子句中的错误。