数据库插入时报错

#1 ipengxh

$email_address_db = spClass("email_address");$email_arr = explode(';', $email_address); $email_number = count($email_arr);for ($i = 0; $i<$email_number; $i++){    $email = $email_arr[$i];    $email_address_insert = array(        'address' => $email,        'group' => $group_id,        );    $email_address_db -> create($email_address_insert);    echo $i." is done, ".$email." is inserted!
";}$this -> message = "Success! You have inserted ".$i." email addresses.";$this -> display(HTML_PATH."/success.html");

这里的email_address数据库中字段address是char(50), group是int(8),在进行create操作时,报错
INSERT INTO email_address (address,group) VALUES ('test@test.com','1')
执行错误: 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 'group) VALUES ('test@test.com','1')' at line 1将上面错误的SQL语句丢到phpmyadmin中执行,同样报错,改成:
INSERT INTO email_address (address, `group`) VALUES ('test@test.com','1')正确执行,也就是说,原因是group字段必须在插入数据库时,用``包含,这个问题该如何解决?

2011-08-24 16:32:06

#2 ipengxh

上面的排版不好,重新发一下。
$email_address_db = spClass("email_address");$email_arr = explode(';', $email_address); $email_number = count($email_arr);for ($i = 0; $i<$email_number; $i++){    $email = $email_arr[$i];    $email_address_insert = array(        'address' => $email,        'group' => $group_id,    );    $email_address_db -> create($email_address_insert);    echo $i." is done, ".$email." is inserted!
";}$this -> message = "Success! You have inserted ".$i." email addresses.";$this -> display(HTML_PATH."/success.html");


这里的email_address数据库中字段address是char(50), group是int(8),在进行create操作时,报错:

INSERT INTO email_address (address,group) VALUES ('test@test.com','1')执行错误: 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 'group) VALUES ('test@test.com','1')' at line 1

将上面错误的SQL语句丢到phpmyadmin中执行,同样报错,改成:
INSERT INTO email_address (address, `group`) VALUES ('test@test.com','1')

正确执行,也就是说,原因是group字段必须在插入数据库时,用``包含,这个问题该如何解决?

2011-08-24 16:35:20

#3 chpu

GROUP是mysql的保留字

2011-08-24 16:44:24

#4 ipengxh

大牛无处不在啊,谢谢了!已经解决了。
解决办法是把字段group换成其余名字,比如换成email_group,原因是group是MySQL的保留字,如3L@chpu所说。

2011-08-24 16:49:20

#5 ipengxh

大牛无处不在啊,谢谢了!已经解决了。
解决办法是把字段group换成其余名字,比如换成email_group,原因是group是MySQL的保留字,如3L@chpu所说。

2011-08-24 16:49:23

#6 anythink

,用``包含,这个问题该如何解决?
spClass()->create( array('`filed`'=> $var) )

之前我也出过这个问题 百思不得起解。

建议speed 把所有的字段都带上 `` ,这样保留字段也可以使用了.....

2011-09-07 18:45:37

#7 jake

SQL语法中是建议不用保留字的,那我觉得还是SQL本身的建议更需要遵守。所以sp也遵守SQL本身的建议。

2011-09-07 22:32:35