Здравствуйте!
У меня такая проблема:есть файл который обращается к базе, и вызывает определенную таблицу.
$query="SELECT * FROM inst";
Мне нужно на место названия таблицы поставить переменную. Эта переменная содержится в ссылке на файл
?view=tovar&table=inst
Вместо mult поставить переменную $table
Спасибо, а еще варианты будут?
Цитата (VSK @ 27.01.2016 - 11:02) |
$query="SELECT * FROM inst";
?view=tovar&table=inst
Вместо mult поставить переменную $table |
Вместо mult - а где он/а? Это (table=inst )?
_____________
Принимаю заказы, писать в ЛС
inpost
27.01.2016 - 11:17
Так делать нельзя.
Объясни, зачем тебе это всё? Кого-то взломать хочешь?
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Извитите ошибся. Да вместо inst
sergeiss
27.01.2016 - 11:29
Цитата (VSK @ 27.01.2016 - 11:02) |
Мне нужно на место названия таблицы поставить переменную. |
Как тебе уже сказали, ТАК ДЕЛАТЬ НЕЛЬЗЯ!!! Потому что ты открываешь гигантские ворота для взлома.
Проверяй, что передано в GET/POST параметрах. И когда определенный входной параметр равен чему-то определенному, то тогда используй определенное имя таблицы.
Например,
if( $_GET['table'] == 'inst' ) {
$table_name = 'inst';
}
$query = "SELECT * from `$table_name`";
При таком подходе ты изначально защищаешься от взлома (от SQL-инъекции).
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
$test = 'http://test/index.php?view=tovar&table=test';
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $test);
$query = "SELECT * FROM ".$table;
echo $query;
_____________
Принимаю заказы, писать в ЛС
Если нельзя, тогда подскажите как решить такую задачу.
Есть интернет-магазин. При выборе изделия подгружается файл в котором находится таблица с перечнем запасных частей к нему (таблица находится в базе данных). Сответственно при разных вариантах выбора изделия должны подгружаться разные таблицы.
Цитата (VSK @ 27.01.2016 - 11:42) |
Если нельзя, тогда подскажите как решить такую задачу. |
sergeiss Правильно сказал, сделайте массив, со всеми возможными вариантами (таблицы, которые имеются), потом моей регуляркой выдёргиваем из url и проверяем этой функцией
in_array
_____________
Принимаю заказы, писать в ЛС
Можно пример? Хотя бы общий.
$url = 'http://test/index.php?view=tovar&table=test';
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $url);
$tabl_original = array("foo", "bar", "hello", "world");
if(in_array($table, $tabl_original)){
$query = "SELECT * FROM ".$table;
} else {
$query = FALSE;
}
_____________
Принимаю заказы, писать в ЛС
Игорь_Vasinsky
27.01.2016 - 12:12
вот же я тебе написал
http://phpforum.su/index.php?showtopic=88730&hl=
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
27.01.2016 - 12:13
Цитата |
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $url); // Выдёргиваем |
нафига?))) чё просто параметр из GET вытащить не судьба если там in_array() есть уже
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker