Отображение всех имен таблиц в php из базы данных MySQL

Хорошо, поэтому я довольно новичок в PHP и SQL / MySQL, поэтому любая помощь приветствуется.

Я чувствую, что принял правильный подход. Я искал php.net для «MySQL показать все имена таблиц», он возвратил устаревший метод и предложил использовать MySQL-запрос в SHOW TABLES [FROM db_name] [LIKE 'pattern'] Я не уверен, что означает «шаблон», но, Я искал «SQL Wildcard» и получил символ «%». Согласно всему, что я нашел, это должно работать и выводить имена таблиц в конце, но это не так. Какие-либо предложения? Заранее спасибо.

 <?php if ($_REQUEST["username"]=="coke"&&$_REQUEST["password"]=="pepsi"){ echo 'You have successfully logged in.'; echo '<br />'; echo 'These are your tables:'; echo '<br />'; $link = mysql_connect("sql2.njit.edu", "username", "password"); mysql_select_db("db_name") or die(mysql_error()); $result = mysql_query('SHOW TABLES [FROM db_name] [LIKE '%']'); echo $result; } else echo 'You did not provide the proper authentication'; ?> 

У меня нет ошибок. Результат – это то же, что и эхо, но нет имен таблиц.

Квадратные скобки в вашем коде используются в документации mysql для указания групп дополнительных параметров. Они не должны находиться в фактическом запросе.

Единственная команда, в которой вы действительно нуждаетесь:

 show tables; 

Если вам нужны таблицы из определенной базы данных, скажем, базы данных «книги», тогда это будет

 show tables from books; 

Вам нужна только часть LIKE, если вы хотите найти таблицы, имена которых соответствуют определенному шаблону. например,

 show tables from books like '%book%'; 

покажет вам имена таблиц, которые имеют «книгу» где-то в названии.

Кроме того, просто запуск запроса «show tables» не приведет к выводам, которые вы можете увидеть. SQL отвечает на запрос, а затем передает его на PHP, но вам нужно сказать PHP, чтобы повторить его на странице.

Поскольку это звучит так, будто вы очень новичок в SQL, я бы рекомендовал запустить клиент mysql из командной строки (или использовать phpmyadmin, если он установлен в вашей системе). Таким образом, вы можете увидеть результаты различных запросов, не выполняя функции PHP для отправки запросов и получения результатов.

Если вам нужно использовать PHP, вот очень простая демонстрация. Попробуйте этот код после подключения к базе данных:

 $result = mysql_query("show tables"); // run the query and assign the result to $result while($table = mysql_fetch_array($result)) { // go through each row that was returned in $result echo($table[0] . "<BR>"); // print the table that was returned on that row. } 

Для людей, которые используют инструкции PDO

 $query = $db->prepare('show tables'); $query->execute(); while($rows = $query->fetch(PDO::FETCH_ASSOC)){ var_dump($rows); } 
 SHOW TABLES 

покажет все таблицы в вашем db. Если вы хотите отфильтровать имена, которые вы используете LIKE и wildcard %

 SHOW TABLES FROM my_database LIKE '%user%' 

даст вам все таблицы, имена которых включают «пользователь», например

 users user_pictures mac_users 

и т.п.

Скобки, которые обычно используются в документации mysql для примеров, должны быть опущены в «реальном» запросе.

Также не кажется, что вы эхом возвращаете результат запроса mysql. mysql_query возвращает ресурс mysql при успехе. Страница руководства php также содержит инструкции по загрузке ресурса результата mysql в массив для эха и других манипуляций.

 $tables = $this->db->list_tables(); foreach ($tables as $table) { echo $table; } 

вам нужно назначить mysql_query переменной (например, $ result), а затем отобразить эту переменную, как и обычный результат из базы данных.

Конечно, вы можете запросить свою базу данных с помощью SHOW TABLES а затем пропустить все записи, но это дополнительные строки кода и работать.

PHP имеет встроенную функцию для перечисления всех таблиц в массив для вас:

mysql_list_tables – вы можете найти дополнительную информацию об этом на странице API PHP

Запросы должны выглядеть так:

 SHOW TABLES SHOW TABLES FROM mydatabase SHOW TABLES FROM mydatabase LIKE "tab%" 

Вещи из документации MySQL в квадратных скобках [] являются необязательными.