Перед созданием новой темы, пожалуйста, ознакомьтесь с FAQ по LinkorCMS

Ошибка при создании таблицы

Супер пользователь
Сообщений: 62
Я хочу создать таблицу в MySQL с помощью PHP, но у меня выводит ошибку.
Вот код в PHP
$sql=("CREATE TABLE users(
id INT AUTO_INCREMENT,
user_name VARCHAR(20),
user_family_name VARCHAR(30),
user_email VARCHAR(30),
user_pass VARCHAR(45)
PRIMARY KEY(id)
)") Or die(mysql_error());

А это ошибка
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 '(id) )' at line 7

Подскажите решение, буду благодарен.


Проблему решил
$sql='CREATE TABLE users(
id INT AUTO_INCREMENT,
user_name VARCHAR(20),
user_family_name VARCHAR(30),
user_email VARCHAR(30),
user_pass VARCHAR(45)
PRIMARY KEY(id)
)' Or die(mysql_error());

-- Изменено "Серго": 31.07.2014 17:15 --
Разработчик
Сообщений: 604
Что-то я тут не понимаю. Почему переменной $sql (которая по логике должна содержать SQL запрос) присваивается логическое выражение? По идее ваша строка с запросом будет приводиться к логическому типу (первый операнд операции ИЛИ) и будет всегда true с таким запросом (она не пуста и не является строкой, которая содержит лишь символ 0). PHP дальше ничего проверять не полезет, так что функция die никогда не должна быть выполнена. Это все следует из документации языка.

Я так понимаю, что там где-то в вашем коде работает связка $result = mysql_query('...') or die(mysql_error()), такое хорошо при пятиминутной отладки, но потом не забывайте вырезать это or die. Если уж так надо в коде иметь отладку, то сделайте себе обертку над функциями с логгированием запросов и прочей нужной информации. Но оба отрезка кода в посте так и остаются странными. Запросы одни и те же, чем они исправлены?

И, наверное, лучше выложить полностью код. Ибо тот, что находится в посте, непонятную пользу приносит.

А ошибка в самом запросе - это забытая запятая перед строчкой PRIMARY KEY. Советую для создания таблиц использовать тот же phpMyAdmin, ибо знать SQL хорошо, но утомительно все ручками делать со временем станет.

Рабочий запрос:
CREATE TABLE users(
id INT AUTO_INCREMENT,
user_name VARCHAR(20),
user_family_name VARCHAR(30),
user_email VARCHAR(30),
user_pass VARCHAR(45), -- !!!
PRIMARY KEY(id)
)


-- Изменено "Мартин": 31.07.2014 18:58 --
Гости не могут отвечать на темы. Войдите или Зарегистрируйтесь.
Здесь присутствуют
(пользователей: 0, гостей: 1)
Быстрый переход: