这个查询有什么问题

时间:2010-12-30 09:13:21

标签: php mysql

当我将记录插入mysql时,它会给我错误

$sql = "insert into fish (fish_id,common_name,scientific_name,family,range,habitate,adult_size,identification,how_to_fish,image) values ('$com_name','$scientific_name','$family','$range','$habitate','$adult_size','$identification','$how_to_fish','$TARGET_PATH')";

错误是

  

无法将数据插入数据库:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“range,habitate,adult_size,identification,how_to_fish,image) values ('Suwannee Ba”附近使用正确的语法

当我转储查询时,它显示所有字段都是正确的。

string(737) "insert into fish (catch_id,common_name,scientific_name,family,range,habitate,adult_size,identification,
how_to_fish,image) values ('','Suwannee Bass','Micropterus notius','Centrarchidae (Sunfish)','United States (Florida, Georgia)',
'Freshwater: found in Suwannee and Ochlockonee river drainages of Florida and Georgia.',
'Up to 12 oz (.34 kg).','The smallest of the Black Bass; brown with dark markings along back and sides. Adult male has blue cheeks, breast, and belly.',
'Natural or artificial bait such as spinners, spoons, crankbaits, surface plugs, and plastic worms. Also can be caught via fly fishing using bugs, streamers, and bucktails. Live bait includes worms, crayfish, leeches, and minnows.',
'localhost/fish/pics/Smallmouth bass.png')"

请注意我的(catch_id)是自动增量,我在没有插入catch_id的情况下检查了这个,但同样存在问题

5 个答案:

答案 0 :(得分:6)

RANGE是一个MySQL保留字,因此你需要将range字段名称包装在反引号中,否则MySQL会感到困惑。

insert into fish (fish_id,common_name,scientific_name,family,`range`,habitate...

然后,您可能只需将表名和所有字段名称括在反引号中。或者,重命名range字段,这样您就不必使用反引号。

答案 1 :(得分:1)

RANGE是一个MySQL关键字。您应该将所有字段和表名称放在引号中:

`range`

答案 2 :(得分:0)

您的查询应以

开头
insert into fish (common_name,scientific_name

请注意,此处未列出id字段。

如果catch_id不可为空,则应在查询中指定其值:

insert into fish (catch_id,common_name,... ) values (1/*catch_id*/,'$com_name',...)

答案 3 :(得分:0)

您指定了10个字段,但只提供了9个

答案 4 :(得分:0)

要么你应该更改表字段名称,要么放入``和
最好使用另一种一次插入单行的语法

$sql="INSERT INTO fish SET
               common_name='$com_name',
               scientific_name='$scientific_name',
               family='$family',
               `range`='$range',
               habitate='$habitate',
               adult_size='$adult_size',
               identification='$identification',
               how_to_fish='$how_to_fish',
               image='$TARGET_PATH' ";

我认为这样可以减少错误发生的可能性,如果发生错误则很容易识别。