2011-05-05 40 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函數。 快樂編碼!