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

Я пытаюсь создать таблицу mysql на основе переменной из php, но она не работает без каких-либо объяснений.

$name = mysql_real_escape_string($_POST['name']);
mysql_query("CREATE TABLE `".$name."` ( name VARCHAR(30), type VARCHAR(30), style VARCHAR(30))");

Когда я устанавливаю $ name = test; он затем работает, но не с привязкой переменной, привязанной к ней.

Я смотрел на эту ссылку среди других, и все говорят, что это должно работать, но из того, что я вижу, это не так.

Обновить:

Я также пробовал код ниже, но он переводит страницу в автономный режим.

$variable=$_POST['name'];
mysqli_connect("localhost", "devices", "a") or die(mysql_error()); 
mysqli_select_db("devices") or die(mysqli_connect_error()); 
mysqli_query("CREATE TABLE $variable ( computer text, mac text, windows text)");

Я запускаю PHP версию 5.5.36

php,mysql,

0

Ответов: 2


2

Вы можете использовать htmlspecialchars($_POST['name'],ENT_QUOTES);для очистки имени.

Также вы должны использовать PDO или MySQLi, поскольку MySQL устарел и больше не поддерживается.

Если вы хотите увидеть ошибку, используйте это:

mysql_query("CREATE TABLE `".$name."` ( name VARCHAR(30), type VARCHAR(30), style VARCHAR(30))");

echo mysql_errno() . ": " . mysql_error() . "
";

Обновить:

MySQLi доступен в PHP 5

если вы планируете использовать MySQLi:

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

if ($mysqli->connect_errno) {
    echo("Connect failed: %s
", $mysqli->connect_error);
    exit();
}

$variable=$_POST['name'];

if ($mysqli->query("CREATE TABLE $variable ( computer text, mac text, windows text)") === TRUE) {
    echo("Table successfully created.
");
}

1 принят

Я не понимаю, почему 100%, но все сводится к приведенной ниже строке кода.

$variable=$_POST['name'];

Когда я переключился с TextWrangler на NetBeans, чтобы помочь с проверкой синтаксиса, я обнаружил, что получаю сообщение об ошибке. Предупреждение: «Недоступно суперглобальное $ _POST массив напрямую»

В результате я перешел на использование фильтрации и не получал прямого доступа к массиву $ _POST, который решил проблему.

$variable=filter_input(INPUT_GET, 'name');

В другой заметке я перешел на MySQLi, поскольку MySQL устарел. Спасибо Lucas Desouza.

PHP, MySQL,