Почему выдает ошибку синтаксиса SQL? - PullRequest
1 голос
/ 06 апреля 2010

У вас есть идеи, почему я получаю это:

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 ]

5 голосов
/ 06 апреля 2010
`author` varchar(255) collate latin1_general_ci NOT NULL default ``,

'author' - это имя столбца, следовательно, почему оно идет в обратном порядке. Но по умолчанию '' - это значение , поэтому оно должно быть в кавычках, а не в бэках, метинках.

Если это так, то же самое относится и ко всем другим значениям по умолчанию.

3 голосов
/ 06 апреля 2010

Вы используете кавычки вместо кавычек для строк. Изменить это:

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 голосов
/ 06 апреля 2010

Спасибо за отзывы. На самом деле я делал это раньше (ставя «вместо»), но он просто показал мне пустую страницу ...

Я понял мою проблему. Я должен был поставить обратную косую черту перед каждым или просто поменять

$sql = 'CREATE TABLE `forum` (

до

$sql = "CREATE TABLE `forum` (

(обратите внимание на кавычки)

В любом случае, спасибо, это помогло мне разобраться!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...