Хорошо, поэтому я довольно новичок в 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 в квадратных скобках [] являются необязательными.