Соединитесь с сервером, не получая никаких визуальных таблиц

Я делаю простую таблицу получения из запроса к серверу. Но, пробуя это на моей локальной машине, я вообще ничего не вижу. Я проверил, что локальный сервер MySQL работает, как и должно быть, и учетные данные, которые я предоставляю, должны быть правильными. Я не получаю никаких ошибок, но, как я сказал, я ничего не вижу из базы данных, но я вижу другие элементы на странице. Я ценю всю помощь, которую я могу получить, я немного новичок в MySQL.

Вот мой код:

     <html>
<style>
table.db-table      { border-right:1px solid #ccc; border-bottom:1px solid #ccc; }
table.db-table th   { background:#eee; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }
table.db-table td   { padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }
</style>
    </html>


<script>
$connection = mysql_connect('localhost','user','password');
mysql_select_db('my_db',$connection);

/* show tables */
$result = mysql_query('SHOW TABLES',$connection) or die('cannot show tables');
while($tableName = mysql_fetch_row($result)) {

    $table = $tableName[0];

    echo '<h3>',$table,'</h3>';
    $result2 = mysql_query('SHOW COLUMNS FROM '.$table) or die('cannot show columns from '.$table);
    if(mysql_num_rows($result2)) {
        echo '<table cellpadding="0" cellspacing="0" class="db-table">';
        echo '<tr><th>Field</th><th>Type</th><th>Null</th><th>Key</th><th>Default<th>Extra</th></tr>';
        while($row2 = mysql_fetch_row($result2)) {
            echo '<tr>';
            foreach($row2 as $key=>$value) {
                echo '<td>',$value,'</td>';
            }
            echo '</tr>';
        }
        echo '</table><br />';
    }
}
    </script>

1 ответ

Я немного разбираюсь в этом, но подозреваю, что вы не видите никаких возвращаемых данных, потому что такие команды, как "SHOW TABLES" и "SHOW COLUMNS" не являются реальными запросами. Это внутренние команды MySQL, поэтому я сомневаюсь, что они будут выполнены mysql_query,

Вместо этого вам нужно использовать таблицы словаря данных, которые для MySQL являются базой данных INFORMATION_SCHEMA. Итак, ваш первый запрос будет:

SELECT table_name
FROM   information_schema.tables
WHERE  table_schema = 'my_db'

и ваши последующие запросы будут:

SELECT column_name
FROM  information_schema.columns
WHERE  table_schema = 'my_db'
AND    table_name = [table_name]
Другие вопросы по тегам