[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как в SELECT поставить переменную на место таблицы
Страницы: 1, 2
VSK
Здравствуйте!
У меня такая проблема:есть файл который обращается к базе, и вызывает определенную таблицу.

$query="SELECT * FROM inst";

Мне нужно на место названия таблицы поставить переменную. Эта переменная содержится в ссылке на файл
?view=tovar&table=inst

Вместо mult поставить переменную $table
Valick
Цитата (VSK @ 27.01.2016 - 10:02)
Эта переменная содержится в ссылке на файл

это крайне плохо

_____________
Стимулятор ~yoomoney - 41001303250491
VSK
Спасибо, а еще варианты будут?
Миша
Цитата (VSK @ 27.01.2016 - 11:02)


$query="SELECT * FROM inst";

?
view=tovar&table=inst

Вместо mult поставить переменную $table

Вместо mult - а где он/а? Это (table=inst )?

_____________
Принимаю заказы, писать в ЛС
inpost
Так делать нельзя.
Объясни, зачем тебе это всё? Кого-то взломать хочешь?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
VSK
Извитите ошибся. Да вместо inst
sergeiss
Цитата (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, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Миша
$test = 'http://test/index.php?view=tovar&table=test';
$table = preg_replace('#^(.*?)(=)(\w+)$#u', '$3', $test);
$query = "SELECT * FROM ".$table;
echo $query;




_____________
Принимаю заказы, писать в ЛС
VSK
Если нельзя, тогда подскажите как решить такую задачу.
Есть интернет-магазин. При выборе изделия подгружается файл в котором находится таблица с перечнем запасных частей к нему (таблица находится в базе данных). Сответственно при разных вариантах выбора изделия должны подгружаться разные таблицы.
Миша
Цитата (VSK @ 27.01.2016 - 11:42)
Если нельзя, тогда подскажите как решить такую задачу.

sergeiss Правильно сказал, сделайте массив, со всеми возможными вариантами (таблицы, которые имеются), потом моей регуляркой выдёргиваем из url и проверяем этой функцией in_array

_____________
Принимаю заказы, писать в ЛС
VSK
Можно пример? Хотя бы общий.
Миша
$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;
}


_____________
Принимаю заказы, писать в ЛС
VSK
Спасибо. Буду работать.
Игорь_Vasinsky
вот же я тебе написал 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
Цитата
$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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.