PHP - выберите таблицу SQL, используя переменную PHP в операторе выбора - PullRequest
0 голосов
/ 03 мая 2018

Как я могу использовать переменную для выбора таблицы SQL?

$sselect = $_GET['series'];
$episodes = mysqli_query($conn, "SELECT * FROM '$sselect'") or die(mysqli_error());

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Попробуйте это: Это должно работать. Благодаря @Phil он указал, что имена таблиц должны быть заключены в обратные галочки. Я обновил свой ответ, чтобы сделать это. Дополнительные одинарные кавычки используются для выполнения запроса MYSQL.

$sselect = $_GET['series'];
$episodes = mysqli_query($conn, 'SELECT * FROM `'.$sselect.'`') or die(mysqli_error());    

UPDATE:

Фил говорит, что если вы используете переменную $ _GET, кто-то может легко заменить URL-адрес другим именем таблицы, оставляя огромный риск для безопасности. Например, предположим, у меня есть таблица с именем users, но я ожидаю, что переменная $_GET будет одной из следующих: cars, pencils или colors.

Вы хотите, чтобы форма возвращала URL-адрес, подобный следующему:

www.example.com/index.php?series=pencils

Но вместо этого пользователь может изменить данные для представления этого:

www.example.com/index.php?series=users

Предоставление пользователю / злоумышленнику доступа к конфиденциальной таблице. Это не очень хорошая практика, и Фил предлагал вам изменить схему, как в структуре таблицы, чтобы пользователь не выбирал имя таблицы.

0 голосов
/ 03 мая 2018

Почему бы не использовать простой конкат?

$sselect = $_GET['series']; $episodes = mysqli_query($conn, "SELECT * FROM ".$sselect) or die(mysqli_error());

...