2012-06-11 2 views
0

Как использовать данные из переменной для создания таблицы с тем же именем?создавать таблицы базы данных в mysql с использованием данных из переменной

Если существует переменная с именем $ user_data, и мы получили доступ к значению ['username'], как это можно использовать для создания таблицы базы данных с тем же значением, чтобы каждый пользователь мог иметь свою собственную таблицу в базе данных, и он назван так же, как и имя пользователя в базе данных.

Это правильный способ связывания таблиц или наилучшего способа отображения данных базы данных. И как таблицы и базы данных связаны через общие данные?

ответ

0

Что-то вдоль этих линий:

mysql_query("CREATE TABLE {$user_data['username']}(id INT NOT NULL AUTO_INCREMENT); 
0

Вы можете запросить создание таблицы.

mysql_connect("localhost", "bill", "3pD]gks*dg"); 
mysql_select_db("user_db"); 
mysql_query("CREATE TABLE ".$user_data['username']."(some_text varchar(15), some_int int)"); 

В скобках запроса вы должны поместить нужную структуру таблицы.

0

Это действительно плохая идея. На самом деле есть целая глава «Метаданные триблей» на эту тему в книге SQL Antipatterns (кстати, моя рекомендация, получите).

Прежде всего, в случае пользователей это откроет вам приложение для дополнительных угроз для инъекций. Как простые, так и вторые заказы sql-инъекций (чит-бой here и here). И это уменьшит возможность индексирования данных.

Вместо этого вы должны хранить все данные пользователя в одной (или двух, если это сайт с большим использованием), и использовать внешний ключ, чтобы связать пользователей с другим контентом, который затем был сделан.

+0

Hi. Спасибо, я думал о том, что таблицы можно догадаться. Каков наилучший способ сделать это. Я хотел бы, чтобы каждый пользователь имел свои собственные данные разных атрибутов. Или лучше сбросить все данные в один, как вы сказали? Меньше времени поиска, хотя я думаю. Есть ли способ установить и сбросить имена таблиц базы данных на лету? – jarryd

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