2009-09-24 2 views
0

Итак, я хочу вставить некоторые данные в таблицу MySQL, где имя таблицы, в которую вводятся данные, является переменной PHP.Вставить переменные в таблицу, которая выбрана из имени переменной PHP

Что-то вроде этого:

$tablename = "databasetable"; 

$insert = mysql_query(
"INSERT INTO '".$tablename."' (column1, col2) 
VALUES ('Blah', 'Blah') 
"); 

Но это, конечно, не работает, поэтому я не знаю, что делать. Кстати, я новичок в PHP и StackOverflow.

ответ

2

Удалить одинарные кавычки из вокруг переменной имени таблицы, и он будет работать:

$tablename = "databasetable"; 

$insert = mysql_query(
"INSERT INTO ".$tablename." (column1, col2) VALUES ('Blah', 'Blah')"); 
+0

Это ответ, однако вы (Neo) должны ознакомиться с SQL-инъекцией и узнать, как это может потенциально испортить вашу базу данных. – seanmonstar

+0

Спасибо за это. Я избежал переменных, которые я вставляю с помощью mysql_real_escape_string() ;. Я также обнаружил, что я разбирал две строки, которые были собраны неправильно, но теперь то, что я делал, работает. – 2009-09-24 03:53:20

1

насчет:

$tablename = "databasetable"; 
$insert = mysql_query("INSERT INTO ".$tablename." (column1, col2) VALUES ('Blah', 'Blah')"); 

т.е. без простых кавычек вы надевали Arround имя таблицы ,

Или, как вы используете двойные кавычки, что означает переменные интерполированное:

$tablename = "databasetable"; 
$insert = mysql_query("INSERT INTO $tablename (column1, col2) VALUES ('Blah', 'Blah')"); 

Как Замечание, в обоих случаях, вы должны быть действительно уверены, что $tablename не содержит каких-либо вредоносных данных !

0

Мой ответ похож на Даг, хотя я хотел бы использовать «обратные галочка» в запросе вокруг имени таблицы, чтобы отличить его в виде таблицы, как в дальнейшем предотвратить возможность злонамеренной инъекции ...

Э.Г.

$tablename = "databasetable"; 

$insert = mysql_query("INSERT INTO `{$tablename}` (column1, col2) 
         VALUES ('Blah', 'Blah')" 
        ); 
Смежные вопросы