Создать таблицу mysql с переменной php не работает

Я довольно новичок в php .. и это, наверное, глупая ошибка … но я понятия не имею, что происходит. Я пытаюсь создать таблицу в моей базе данных, используя php. Я хочу назвать таблицу после имени пользователя. Я использую переменную $tableusername . Вот мой код

 $sql="SELECT * FROM userdata WHERE username='$username'"; $result=mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { $tableusername = $row["username"]; } $create = "CREATE TABLE `".$tableusername."` (' . ' `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ' . ' `please` VARCHAR(50) NOT NULL, ' . ' `make` VARCHAR(50) NOT NULL, ' . ' `this` VARCHAR(50) NOT NULL, ' . ' `work` VARCHAR(50) NOT NULL' . ' )' . ' ENGINE = myisam;"; mysql_query($create) ?> <html> <head> </head> <body> You have successfully signed up. <?php echo $tableusername ?> </body> </html> 

Итак – создает таблицу с именем $tableusername . Переменная не переносится. НО – когда я echo $tableusername – переменная переносится. Я довольно новичок в этом, поэтому любая помощь приветствуется.

Добавьте это после SQL-запросов – (Это действительно помогает и ускоряет время исправления ошибок)

 or die("A MySQL error has occurred.<br />Error: (" . mysql_errno() . ") " . mysql_error()); 

echos это в вашем случае:

Произошла ошибка MySQL. Ошибка: (1064) У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с ''. ' ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,'. ' please VARCH' в строке 1

Это указывает на то, что ошибка касается « & » .


После изменения кода, содержащего одиночные кавычки и выполняющего его, в настоящее время нет эха.

  <?php $tableusername = "philip"; $create = "CREATE TABLE `".$tableusername."` (" . " `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " . " `please` VARCHAR(50) NOT NULL, " . " `make` VARCHAR(50) NOT NULL, " . " `this` VARCHAR(50) NOT NULL, " . " `work` VARCHAR(50) NOT NULL" . " )" . " ENGINE = myisam;"; mysql_query($create)or die("A MySQL error has occurred.<br />Error: (" . mysql_errno() . ") " . mysql_error()); ?> 

Примечание. Пожалуйста, обратитесь к расширению MySQLi при использовании SQL, встроенного в PHP. mysql_ * находится в процессе устаревания.

Надеюсь это поможет.

у вас неверная конкатенация строки, используйте double quotes вместо single quotes .

 $create = "CREATE TABLE `".$tableusername."` (" . " `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " . " `please` VARCHAR(50) NOT NULL, " . " `make` VARCHAR(50) NOT NULL, " . " `this` VARCHAR(50) NOT NULL, " . " `work` VARCHAR(50) NOT NULL' " . " )" . " ENGINE = myisam;"; 

// Создаем таблицу MySql с переменной

 $tableName = "tb-"."$userEmail"; $tName="Beta"; $createTable = "CREATE TABLE ".$tName." ( UserName varchar(30), UserPassword varchar(30) )" ; 

Этот синтаксис работает. Примените этот пример к вашему коду. Пожалуйста, просмотрите ошибку в конкатенации

Используйте heredoc :

 $create = <<<SQL CREATE TABLE `$tableusername` ( `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `please` VARCHAR(50) NOT NULL, `make` VARCHAR(50) NOT NULL, `this` VARCHAR(50) NOT NULL, `work` VARCHAR(50) NOT NULL ) ENGINE = myisam; SQL; 

Примечательно, что вы можете использовать интерполяцию строк в heredoc, но вы действительно должны стремиться к параметризованным запросам.