@not-deanon

Что не так с запросом?

$user= $_POST['user'];
$w = "CREATE TABLE `wert`.`".$user."` (`ID` char(255) not null, `Page` char(255), `Class` char(255),`Top` float,`Left` float, PRIMARY KEY(`ID`))";

Ошибка:
Incorrect table name ''

В переменной user значение "Admin".
  • Вопрос задан
  • 427 просмотров
Пригласить эксперта
Ответы на вопрос 3
@MadridianFox
Web-программист, многостаночник
Если вы создаёте кучу одинаковых таблиц с разными названиями - то у вас проблемы не с запросом как таковым, а с подходом к работе с БД.
Что мешает создать одну таблицу, в которой дополнительно будет поле user?
Ну и подобным образом вставлять данные в запрос тоже нехорошо. Любой пользователь может послать в POST вместо названия таблицы кусок sql кода, который либо удалит всю базу, либо позволит увидеть конфиденциальные данные.
Ответ написан
Комментировать
@KotSlon
Java Developer
Всё не так. :) гугли про "prepared statement" и "sql injection"
Ответ написан
Комментировать
@SergeyZelensky-Rostov
Написано же некорректное имя таблицы , пишите просто без `wert`,и у вас прям не дыра,а дырище для выполнение sql-инъекции, используйте PDO или Mysqli и фильтруйте входные данные
UPD: Поддерживаю Иван Корюков так как вы делаете делать не стоит
сделайте таблицу users
CREATE TABLE `users` (`ID` char(255) not null, `username` char(255), `Page` char(255), `Class` char(255),`Top` float,`Left` float, PRIMARY KEY(`ID`))

и пишите в нее все что вам надо, не стоит плодить кучу таблиц

вот код в котором ваш вариант работает
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="" method="POST">
		<input type="text" name="user">
		<input type="submit" value="submit">
		<?php 
		$user = $_POST['user'];
		$w = "CREATE TABLE `".$user."` (`ID` char(255) not null, `Page` char(255), `Class` char(255),`Top` float,`Left` float, PRIMARY KEY(`ID`))";
		$link = mysql_connect('localhost', 'root', '');
		mysql_select_db('test-new',$link);
		echo mysql_query($w);
		

			

		?>
	</form>
</body>
</html>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы