2011-05-05 46 views
0

我会尽快清理并逃脱,只要我得到这个工作正常找不到PHP MySQL插入语法错误

数据库连接和选择在此时通过选择查询进行验证。奇怪的是,如果我使用这个插入查询并直接从mysql命令提示符运行它,它会插入很好。

subscibers表有3列不允许空在其中任何一列:

Server version:   5.5.11 MySQL Community Server (GPL) 
    +--------+-------------+------+-----+---------+----------------+ 
    | Field | Type  | Null | Key | Default | Extra   | 
    +--------+-------------+------+-----+---------+----------------+ 
    | id  | int(11)  | NO | PRI | NULL | auto_increment | 
    | email | varchar(45) | NO | UNI | NULL |    | 
    | active | tinyint(4) | YES |  | 1  |    | 
    +--------+-------------+------+-----+---------+----------------+ 
    3 rows in set (0.01 sec) 

代码在PHP中:

$query = "INSERT INTO `subscribers`(`id`,`email`) VALUES(default,'[email protected]')"; 
print $query;  
mysql_query($query) or die(mysql_error()); 

用于插入打印查询结果:

INSERT INTO `subscribers`(`id`,`email`) VALUES(default,'[email protected]') 

您有一个您的SQL语法错误;在第1行检查与您的MySQL服务器版本对应的正确语法使用手册

编辑:我相信在那里没有其他电子邮件唯一性相同。查看电子邮件的表格列表,并查看那些垃圾。

+0

什么版本的MySQL?你可以粘贴你的确切CREATE TABLE代码吗? – 2011-05-05 05:13:08

+0

发布表信息。 – robx 2011-05-05 05:44:45

回答

4

不包括在你的INSERT语句ID:

INSERT INTO `subscribers` (`email`) VALUES ('[email protected]'); 

或者设置idNULL

INSERT INTO `subscribers` (`id`,`email`) VALUES (NULL,'[email protected]'); 
+0

没有变化。相同的语法错误。从以前的经验来看,将自动增量的默认值工作得很好。但是,默认情况下,NULL和不包括正在修复它。 – robx 2011-05-05 05:04:56

+0

它适用于MySQL,其他数据库..我不确定。尽管如此,这对于MySQL的课程来说也是一样。 – 2011-05-05 05:05:14

+0

对,我在mysql数据库上。奇怪的事情就像提到的,如果我复制并粘贴从PHP输出到mysql提示符,它插入就好了。不知道问题是什么。 – robx 2011-05-05 05:10:02

0

我不认为你需要周围的列名或表名的特殊报价。试试这个

INSERT INTO订阅者(email)VALUES('[email protected]');

+1

反列列名和表名非常好 - 它们可能不是必需的,但它们不会造成问题。 – andrewsi 2012-09-23 14:37:34

1

没有必要插入id,因为它是auto_increment并自动插入。

$query = "INSERT INTO subscribers(email) VALUES('"[email protected]"')"; 
mysql_query($query) or die(mysql_error()); 

使用此。还建议使用MySQLi代替MySQL函数。 快乐编码!