У меня возникла проблема с созданием таблицы SQL с переменной PHP.
Скажем, $ tbl_date = "data";
mysql_query('CREATE TABLE '.$tbl_date.' ( Test varchar(15), Yes varchar(15), Very int )');
Он не создает таблицу.
Похоже, что он не работает, потому что имя вашей таблицы не указано в кавычках. Попробуй это:
mysql_query('CREATE TABLE `'.$tbl_date.'` ( `Test` varchar(15), `Yes` varchar(15), `Very` int )');
И то же самое относится к именам полей.
Также попробуйте это, его легче читать люди:
mysql_query("CREATE TABLE `{$tbl_date}` ( `Test` varchar(15), `Yes` varchar(15), `Very` int )");
Обратите внимание на различные типы котировок:
– одинарные кавычки и двойные кавычки для построения некоторой строки (например, SQL-запрос) в PHP
– обратные кавычки, используемые специально как часть SQL-запроса для имен таблиц и имен столбцов
Я думаю, что вам не хватает форматирования (одиночные или двойные кавычки и т. Д.), Попробуйте это
$sql = "CREATE TABLE `user` (`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `address` TEXT NOT NULL) ENGINE = MyISAM;";
Вот моя работа:
$cars = "CREATE TABLE $tbl_date ( Test varchar(15), Yes varchar(15), Very int )"; $results = mysql_query($cars) or die (mysql_error());
Да, но вы должны быть осторожны, чтобы пользователь не вводил код. Загляните в mySQL-инъекцию, чтобы убедиться, что ваш код безопасен, иначе пользователь может создавать или удалять таблицы, к которым вы не хотите иметь доступ. Кроме того, я не понимаю, почему вы хотели бы, конечно, было бы лучше создать таблицу в базе данных, а затем добавить поля со строками, которые могут быть добавлены впоследствии.
Да, ты можешь.
mysql_query
принимает строку, поэтому вы можете в принципе присоединить любую динамическую строку.
Как и было предложено, вам необходимо использовать обратные элементы до и после имени таблицы (и проверить, имеет ли пользователь вашего соединения права на создание таблиц).
Основная проблема с этим использованием заключается в том, что вы уязвимы для SQL-инъекции (пока вы не избегаете $tbl_date
), поэтому я предлагаю вам добавить гораздо больше элементов управления к используемой переменной.
Кроме того, добавление динамических таблиц в базу данных (исключая базы данных noSQL) обычно является использованием BAD (проверьте, действительно ли вам это нужно).