Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как выбирать базу данных в запросе mysql через переменную?

Антон Винецкий Винецкий Ученик (96), открыт 1 неделю назад
Как выбрать базу данных при запросе mysql_query() через переменную, полученную через $_GET из url. Вот что пробую, но пишет ошибку:

Fatal error: Uncaught mysqli_sql_exception: Table 'u2471990_111.$dbnum' doesn't exist in /Applications/MAMP/htdocs/photo.php:64 Stack trace: #0 /Applications/MAMP/htdocs/photo.php(64): mysqli->query('SELECT * FROM `...') #1 {main} thrown in /Applications/MAMP/htdocs/photo.php on line 64
 $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);   

$dbnum=$_GET['id'];

$result = $db->query('SELECT * FROM `$dbnum` ORDER BY id DESC');

В подключении к самой базе данных проблем нет 100%
4 ответа
Алексей Пупок Профи (983) 1 неделю назад
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

$dbnum=$_GET['id'];

$result = $db->query('SELECT * FROM `'.$dbnum.'` ORDER BY id DESC');
Андрей Высший разум (427727) 1 неделю назад
ДВОЙНЫЕ кавычки:
 $result = $db->query("SELECT * FROM `$dbnum` ORDER BY id DESC"); 
В строку, обрамлённую одинарными кавычками, значения переменных НЕ подставляются.
Оксана ГуцевичУченик (5) 1 неделю назад
https://otvet.mail.ru/question/238044138 помогите
Лайт Ягами Искусственный Интеллект (283660) 1 неделю назад
Попутал одиночные кавычки с двойными, сработает так:
 $result = $db->query("SELECT * FROM `$dbnum` ORDER BY id DESC");  
Но подставлять имя таблицы из заданного пользователем параметра - это очень небезопасно, любой посторонний человек сможет безнаказанно вытаскивать данные из любых таблиц, к которым скрипт имеет доступ.
step Мастер (1083) 1 неделю назад
на вопрос уже ответили, но не забывай экранировать все, что приходит извне. взломают как пить дать
Похожие вопросы