2013-11-01 3 views
-1

Зачем этот код не выполняется. Здесь ошибка я получаю, когда я бегу через PHPMYADЧто не так с кодом MYSQL?

Ошибка SQL-запрос:

CREATE TABLE 'c4lpetitions'. 'Legalize-Raw-Milk-in-Wisconsin-1362871708' (
    'prefix'VARCHAR(10) NULL , 
    'first'VARCHAR(255) NULL , 
    'middle'VARCHAR(255) NULL , 
    'last'VARCHAR(255) NULL , 
    'suffix'VARCHAR(10) NULL , 
    'email'VARCHAR(255) NOT NULL , 
    'address'VARCHAR(255) NULL , 
    'city'VARCHAR(255) NULL , 
    'state'VARCHAR(2) NULL , 
    'zip' INT NULL , 
    'timestamp'TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
    ) 

MySQL говорит: Документация

1064 - У Вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' c4lpetitions '.' Legalize-Raw-Milk-in-Wisconsin-1362871708 '(' prefix 'VARCHAR (10' на линии 1

+0

просто не научитесь использовать зарезервированные слова http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html, чтобы вам не нужны неприятные обратные ссылки, не переносимые между ядрами баз данных и его это не ANSI SQL .. использование зарезервированных ключевых слов в программировании даже не возможно, поэтому это должно быть анти-шаблон SQL. –

+1

Помимо основной проблемы, кажется, что вы создаете новую таблицу для каждого ходатайства. Если у вас нет особых проблем с производительностью, вам будет намного проще иметь единую таблицу пользователей и таблицу с множеством таблиц между таблицей просителей и петиций. – halfer

+0

@halfer вы не полностью знаете его требования к приложениям, но все же это хороший комментарий. Если он действительно должен опросить статистику о всех таблицах c4lpetitions, у него проблемы, потому что требуется сложное внутреннее объединение или объединение всего заявления (что может как правило, возникают проблемы с производительностью, которые, как известно, создают временные таблицы) .. Это должны были таблицы разделов. –

ответ

4

побег символов MySQL является кавычка `, а не одинарная кавычка '.

Я также предлагаю хранить почтовые коды как char s а не ints, потому что полноформатный почтовый индекс, такой как 12345-1234, не является целым числом.

+2

+1 для консультации по почтовым индексам. Кроме того, [во многих странах есть письма в их почтовых кодах] (http://www.theonion.com/articles/perky-canada-has-own-government-laws,19927/). –

+0

Кроме того, некоторые почтовые индексы могут иметь начальный ноль. Но это тоже правильно. Вы можете видеть это в PHPMYADMIN при выполнении запросов по графическому интерфейсу. –

+0

+1 для символа datatype ... подсказка советует плохо .. см. Комментарий @ top –

1

Использование бэк-тиков для разделения идентификаторов базы данных/таблицы/столбцы, а не одиночные кавычки.

Однополочные кавычки для строковых литералов или даты литералов.

+0

Может быть, новая глава для вашей книги? использование зарезервированных ключевых слов в программировании даже не возможно, поэтому это должен быть анти-шаблон SQL, потому что timestamp является зарезервированным ключевым словом в MySQL. Если вы используете его, просто дайте мне кредиты :-) .. –

+0

Да, это действительно необычно, но это, вероятно, возможно на некоторых языках, таких как Parrot или LISP или что-то в этом роде. –

+0

@RaymondNijland, FWIW, 'TIMESTAMP' is * not * a [зарезервированное слово в MySQL] (http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html). Это своего рода grandfathered, в частности, потому что люди так часто используют его, как имя столбца. –

Смежные вопросы