Я довольно новичок в 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, но вы действительно должны стремиться к параметризованным запросам.