2014-03-06 148 views
1

我試圖在PHP運行下面的查詢我的管理:創建表的MySQL語法錯誤

CREATE TABLE IF NOT EXISTS 'ibn_table' (
'id' int(11) NOT NULL AUTO_INCREMENT, 
'itransaction_id' varchar(60) NOT NULL, 
'ipayerid' varchar(60) NOT NULL, 
'iname' varchar(60) NOT NULL, 
'iemail' varchar(60) NOT NULL, 
'itransaction_date' datetime NOT NULL, 
'ipaymentstatus' varchar(60) NOT NULL, 
'ieverything_else' text NOT NULL, 
PRIMARY KEY ('id') 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

我得到這個錯誤:

#1064 - 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 ''ibn_table' ('id' int(11) NOT NULL AUTO_INCREMENT, 'itransaction_id' varchar(' at line 1

任何幫助表示讚賞。

+1

誰downvoted這個問題? –

回答

2

使用反引號引用的列和表名

mysql> CREATE TABLE IF NOT EXISTS `ibn_table` (
    -> `id` int(11) NOT NULL AUTO_INCREMENT, 
    -> `itransaction_id` varchar(60) NOT NULL, 
    -> `ipayerid` varchar(60) NOT NULL, 
    -> `iname` varchar(60) NOT NULL, 
    -> `iemail` varchar(60) NOT NULL, 
    -> `itransaction_date` datetime NOT NULL, 
    -> `ipaymentstatus` varchar(60) NOT NULL, 
    -> `ieverything_else` text NOT NULL, 
    -> PRIMARY KEY (`id`) 
    ->) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 
Query OK, 0 rows affected (0.12 sec) 
+0

......或者把它們全部放在一邊。 – Strawberry

+0

@Strawberry正確:) – Deepak

+0

我的不好,它的工作原理!感謝您的幫助! –

0

的列名應該是反引號或只是刪除引號。反引號將用於表和列標識符,但僅當標識符爲MySQL reserved keyword時,或者標識符包含空白字符或超出受限集的字符時才需要(請參閱下文)。通常建議避免使用保留關鍵字作爲列或儘可能避免報價問題。

試試這個:

CREATE TABLE `ibn_table` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `itransaction_id` VARCHAR(60) NOT NULL, 
    `ipayerid` VARCHAR(60) NOT NULL, 
    `iname` VARCHAR(60) NOT NULL, 
    `iemail` VARCHAR(60) NOT NULL, 
    `itransaction_date` DATETIME NOT NULL, 
    `ipaymentstatus` VARCHAR(60) NOT NULL, 
    `ieverything_else` TEXT NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MYISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;