2012-03-27 6 views
8

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

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

<?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'; 
?> 

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

ответ

38

Квадратные скобки в вашем коде используются в документации 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. 
} 
0

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

+0

Это не помогло. Любые другие предложения? Обновлен мой вопрос, чтобы показать изменения, которые вы предложили. – EGHDK

+0

вам нужно выполнить цикл $ result, как и обычный результат: 'while ($ row = mysql_fetch_array ($ result, MYSQL_NUM)) { echo $ row [0]; } ' –

+0

также я думаю, что синтаксис SQL может быть немного выключен, как упоминалось в другом месте - избавиться от всего в квадратных скобках –

1

Запросы должны выглядеть следующим образом:

SHOW TABLES 

SHOW TABLES FROM mydatabase 

SHOW TABLES FROM mydatabase LIKE "tab%" 

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

1
SHOW TABLES 

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

SHOW TABLES FROM my_database LIKE '%user%' 

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

users 
user_pictures 
mac_users 

т.д.

1

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

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

6

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

$query = $db->prepare('show tables'); 
$query->execute(); 

while($rows = $query->fetch(PDO::FETCH_ASSOC)){ 
    var_dump($rows); 
} 
0

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

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

mysql_list_tables - Вы можете найти более подробную информацию о нем в The PHP API page

+0

Теперь эта функция полностью удалена. – NaveenDA

1

// list_tables означает базу данных все таблицы

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

Если вы ответите на вопрос, который стареет, пожалуйста, объясните, как ваш ответ лучше, чем уже упомянутые ответы или как язык изменился, чтобы дать ответ, когда он раньше этого не делал. –

+0

list_tables означает базу данных всей таблицы –

Смежные вопросы