2010-04-05 67 views
1

你有任何想法,爲什麼我得到這樣的:爲什麼給我一個SQL語法錯誤?

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 '``, `title` varchar(255) collate latin1_general_ci NOT NULL default ``,' at line 3 

的代碼是這樣的(有問題的部分IM與...)

$sql = 'CREATE TABLE `forum` (
         `postid` bigint(20) NOT NULL auto_increment, 
         `author` varchar(255) collate latin1_general_ci NOT NULL default ``, 
         `title` varchar(255) collate latin1_general_ci NOT NULL default ``, 
         `post` mediumtext collate latin1_general_ci NOT NULL, 
         `showtime` varchar(255) collate latin1_general_ci NOT NULL default ``, 
         `realtime` bigint(20) NOT NULL default `0`, 
         `lastposter` varchar(255) collate latin1_general_ci NOT NULL default ``, 
         `numreplies` bigint(20) NOT NULL default `0`, 
         `parentid` bigint(20) NOT NULL default `0`, 
         `lastrepliedto` bigint(20) NOT NULL default `0`, 
         `author_avatar` varchar(30) collate latin1_general_ci NOT NULL default `default`, 
         `type` varchar(2) collate latin1_general_ci NOT NULL default `1`, 
         `stick` varchar(6) collate latin1_general_ci NOT NULL default `0`, 
         `numtopics` bigint(20) NOT NULL default `0`, 
         `cat` bigint(20) NOT NULL, 
         PRIMARY KEY (`postid`) 
         );'; 
       mysql_query($sql,$con) or die(mysql_error()); 

幫助將不勝感激!

回答

3

您正在使用反引號代替字符串引號。更改此:

default `` 

這樣:

default '' 

完整的語句應該是:

CREATE TABLE `forum` (
        `postid` bigint(20) NOT NULL auto_increment, 
        `author` varchar(255) collate latin1_general_ci NOT NULL default '', 
        `title` varchar(255) collate latin1_general_ci NOT NULL default '', 
        `post` mediumtext collate latin1_general_ci NOT NULL, 
        `showtime` varchar(255) collate latin1_general_ci NOT NULL default '', 
        `realtime` bigint(20) NOT NULL default '0', 
        `lastposter` varchar(255) collate latin1_general_ci NOT NULL default '', 
        `numreplies` bigint(20) NOT NULL default '0', 
        `parentid` bigint(20) NOT NULL default '0', 
        `lastrepliedto` bigint(20) NOT NULL default '0', 
        `author_avatar` varchar(30) collate latin1_general_ci NOT NULL default 'default', 
        `type` varchar(2) collate latin1_general_ci NOT NULL default '1', 
        `stick` varchar(6) collate latin1_general_ci NOT NULL default '0', 
        `numtopics` bigint(20) NOT NULL default '0', 
        `cat` bigint(20) NOT NULL, 
        PRIMARY KEY (`postid`) 
        ); 
+0

正如Tibo指出的,這個查詢需要用雙引號,而不是單引號。 – 2010-04-05 21:08:45

5
`author` varchar(255) collate latin1_general_ci NOT NULL default ``, 

'作者' 是列名,因此爲什麼它會是反引號。 但默認的''是所以它應該在引號中,而不是反引號,methinks。

如果是這種情況,所有其他默認值也是如此。

+0

好的,謝謝,我現在試試看,堅持一秒鐘。 – Tibo 2010-04-05 20:55:06

0

感謝您的回覆。我之前實際上已經完成了這項工作(放置'而不是`),但它只是向我展示了一個空白頁面......

我想出了我的問題。我要麼不得不把反斜線之前每個「或只是改變

$sql = 'CREATE TABLE `forum` (

$sql = "CREATE TABLE `forum` (

(注意引號)

還是要謝謝你,它幫助我看着辦吧!

+0

Tibo:查看HEREDOC語法,它可以讓你分配大塊文本,而不必擔心引用轉義:http://php.net/manual/en/language.types.string.php#language .types.string.syntax.heredoc – 2010-04-05 21:13:48