2016-08-19 5 views
1

Я пытаюсь создать таблицу всякий раз, когда пользователь отправляет свое доменное имя. Это определенно будет .com или .net или .something Проблема в том, что мой код не создает таблицу, когда она содержит .anything , она отлично работает для имен и символов без .someСоздание таблицы с именем домена не удается

$domain=$_POST['domain_name'];//it is dramatainment.com 

$table = mysqli_query($connection, "CREATE TABLE $domain (
user_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
user_name VARCHAR(100) NOT NULL, 
user_domain VARCHAR(50) NOT NULL, 
user_email VARCHAR(50), 
user_password VARCHAR(50), 
user_date date 
) "); 
if(!$table) 
{ 
die('Could not create table: ' . mysqli_error($connection)); 
} 

Имеет ли команда таблицы creat это ограничение? Можно ли это решить?

+0

Не верю, что вы всегда будете получать хорошее доменное имя, используйте [подготовленные заявления] (http://php.net/manual/en/mysqli.prepare.php). – Script47

+0

Не хотите ли вы добавлять строку с этими данными в ранее существовавшую таблицу, называемую «домены» или что-то еще? –

+0

@tom Мне нравится ваша идея. Но в моем случае мне нужны таблицы, созданные для доменных имен. Спасибо :) –

ответ

0

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

Here вы можете найти, какой символ разрешен в имени таблицы.

Кроме того, можно запросить, используя следующий синтаксис, который будет конфликтовать с именем таблицы:

SELECT * FROM dbname.table_name; 

UPDATE: можно с помощью кавычки приложить имя таблицы:

$sql = 'CREATE TABLE `$tableName` (
user_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
user_name VARCHAR(100) NOT NULL, 
user_domain VARCHAR(50) NOT NULL, 
user_email VARCHAR(50), 
user_password VARCHAR(50), 
user_date date 
)'; 
+0

Благодарим за отзыв. Это сработало. Можете ли вы объяснить, какая разница в обратных тактах, которая позволяет запросу обрабатывать имена с .com? –