为什么给我一个SQL语法错误?

时间:2010-04-05 20:50:13

标签: php sql mysql mysql-error-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 '``, `title` varchar(255) collate latin1_general_ci NOT NULL default ``,' at line 3

代码是这样的(部分我有问题...)

$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 个答案:

答案 0 :(得分:5)

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

'author'是一个列名,因此它为什么会反引号。 但是默认的''是一个所以它应该是引号,而不是反引号,是否为。

如果是这种情况,所有其他默认值也是如此。

答案 1 :(得分: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`)
                    );

答案 2 :(得分:0)

感谢您的回复。我之前实际上已经完成了这个(把'代替`),但它只是给我一个空白的页面......

我发现了我的问题。我要么必须在每个之前加上反斜杠,要么只是改变

$sql = 'CREATE TABLE `forum` (

$sql = "CREATE TABLE `forum` (

(注意引号)

非常感谢,它帮助我解决了问题!