Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: CREATE TABLE <???>

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Avalon
Отправлено: 15 Декабря, 2008 - 12:27:53
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Дек. 2008  


Помог: 0 раз(а)

[+]


Можно ли создать таблицу с динамическим именем, например $name. Мне нужно чтобы при регистрации нового юзера создавалась таблица, название которой равно логину юзера.
Что-то вроде:

mysql_query("CREATE TABLE '$qdata[0]' ()"); или

mysql_query("CREATE TABLE '$_SESSION['user_table']' ()");

Но это не срабатывает. Подскажите как сделать правильно.
 
 Top
EuGen Администратор
Отправлено: 15 Декабря, 2008 - 12:50:39
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




У Вас отсутствует определение полей таблицы. Нельзя создать таблицу, не имеющую ни одного атрибута.
Не очень понятно, правда, зачем Вам создавать на пользователя по таблице. А если у Вас будет 100000 пользователей.. это 100000 таблиц? ..


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Avalon
Отправлено: 15 Декабря, 2008 - 13:02:58
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Дек. 2008  


Помог: 0 раз(а)

[+]


Я опустил поля, дабы не усложнять вопрос. Понятно, что там в скобках будет опредеелние полей, проблема не в них, а в переменной, которая название таблицы. Если вместо $data[0] поставить любое имя, например, abc, запрос проходит.
 
 Top
Вездеход
Отправлено: 15 Декабря, 2008 - 13:31:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. mysql_query("CREATE TABLE '".$qdata[0]."' ()")
  3.  
  4. mysql_query("CREATE TABLE '".$_SESSION['user_table']."' ()")
  5. ?>


вот так сделать попробуй

(Отредактировано автором: 15 Декабря, 2008 - 13:31:53)



-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
EuGen Администратор
Отправлено: 15 Декабря, 2008 - 13:31:30
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Посмотрите, что именно у Вас содержится в переменной, значение которой Вы хотите использовать в качестве имени таблицы, а так же что именно возвращает Вам MySQL - mysql_error


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Avalon
Отправлено: 15 Декабря, 2008 - 14:00:42
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Дек. 2008  


Помог: 0 раз(а)

[+]


Вездеход не срабатывает.

EuGen в переменной хранится логин пользователя, это точно, он и должен присвоиться названию таблицы. Если я правильно понял сообщение об ошибке, проблема в синтаксисе. Я не до конца знаю, как выводить ошибки.. вывел вот так: die(mysql_errno($link).mysql_error($link));
 
 Top
EuGen Администратор
Отправлено: 15 Декабря, 2008 - 14:39:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вообще говоря, имена объектов (таблиц, полей и т.п.) заключаются в обратные (бэктик) кавычки, но не в прямые. Прямые - только для строковых констант и литералов.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo("Variable is: <pre>\n");
  4. var_dump($qdata[0]);
  5. echo("\n</pre>");
  6. mysql_query("CREATE TABLE `".$qdata[0]."` ()") or die(mysql_error());
  7. ?>
  8.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Ыыы
Отправлено: 15 Декабря, 2008 - 14:57:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Июль 2008  
Откуда: Россия, Хабаровск


Помог: 0 раз(а)




А зачем такая структура?? Объясните мне не понимающему Недовольство, огорчение Этоже полный гон с точки зрения производительности!
 
 Top
Вездеход
Отправлено: 15 Декабря, 2008 - 15:06:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




Avalon пишет:
Вездеход не срабатывает.

ну или так

PHP:
скопировать код в буфер обмена
  1. <?
  2. mysql_query("CREATE TABLE `".$qdata[0]."` ()")
  3.  
  4. mysql_query("CREATE TABLE `".$_SESSION['user_table']."` ()")
  5. ?>
  6.  


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Champion Супермодератор
Отправлено: 15 Декабря, 2008 - 15:30:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ыыы пишет:
А зачем такая структура?? Объясните мне не понимающему Этоже полный гон с точки зрения производительности!
Ну или уберите вообще кавычки. В одинарных строковые значения пишутся

(Отредактировано автором: 15 Декабря, 2008 - 15:30:34)

 
 Top
SergeantPEPPER
Отправлено: 15 Декабря, 2008 - 16:32:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


Помог: 0 раз(а)




Можно так (вроде если переменная есть массив, то надо еще фиг. скобки):
CODE (text):
скопировать код в буфер обмена
  1. mysql_query("CREATE TABLE `{$qdata[0]}` ()")


Если не работает:
1) проверьте через echo $qdata[0] значение переменной
2) посмотрите echo mysql_error ()
 
 Top
Avalon
Отправлено: 15 Декабря, 2008 - 16:45:03
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Дек. 2008  


Помог: 0 раз(а)

[+]


Вот этот вариант сработал: `".$qdata[0]."`
Спасибо большое всем.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB