Как загрузить всю базу данных, не зная ее имен полей? - PullRequest
2 голосов
/ 06 июня 2011

Можно ли читать базу данных через php, не зная имен полей?Таким образом, это будет выглядеть следующим образом:

1. Извлечение массива результатов из таблицы «myTable».

2. Подсчет количества полей внутри каждой строки..Создание цикла для создания html-таблицы и вывода значения.

обычно мы знаем имена полей таблицы, поэтому ее легко читать.Что если вы не знаете названия полей?

Спасибо.

Ответы [ 6 ]

4 голосов
/ 06 июня 2011

Используйте *, чтобы указать все поля:

select * from myTable

Если у вас более 1 таблицы, вы можете использовать префикс * с именем таблицы:

select
    another_table.*
from
    my_table
    left join another_table on another_table.id = my_table.another_table_id;

В качестве альтернативыВы можете использовать show fields in myTable или show full fields in myTable, чтобы получить только список полей (без данных).

2 голосов
/ 06 июня 2011
<?php

//connection variables
$host = "";
$database = "";
$user = "";
$pass = "";

//connection to the database
mysql_connect($host, $user, $pass)
or die ('cannot connect to the database: ' . mysql_error());

//select the database
mysql_select_db($database)
or die ('cannot select database: ' . mysql_error());

//loop to show all the tables and fields
$loop = mysql_query("SHOW tables FROM $database")
or die ('cannot select tables');

while($row = mysql_fetch_array($loop))
{

echo "
<table cellpadding=2 cellspacing=2 border=0 width=75%>
<tr bgcolor=#666666>
<td colspan=5><center><b><font color=#FFFFFF>” . $row[0] . “</font></center></td>
</tr>
<tr>
<td>Field</td><td>Type</td><td>Key</td><td>Default</td><td>Extra</td>
</tr>";

$i = 0;

$loop2 = mysql_query("SHOW columns FROM " . $row[0])
or die ('cannot select table fields');

while ($row2 = mysql_fetch_array($loop2))
{
echo "<tr ";
if ($i % 2 == 0)
echo "bgcolor=#CCCCCC";
echo "><td>" . $row2[0] . "</td><td>" . $row2[1] . "</td><td>" . $row2[2] . "</td><td>" . $row2[3] . "</td><td>" . $row2[4] . "</td></tr>";
$i++;
}
echo "</table><br/><br/>";

}
?>

Источник: http://jadendreamer.wordpress.com/2009/01/13/print-all-mysql-database-tables-fields-using-php/

1 голос
/ 06 июня 2011

Это должно сработать:

$res = mysql_query("SELECT * FROM MyTable");
$rows_count = mysql_num_rows($res);
echo '<table>';
for($i=0; $i<$rows_count; $i++)
{
    echo '<tr>';
    $row = mysql_fetch_row($res);
    for($r=0;$r<count($row);$r++)
    {
        echo '<td>';
        echo $row[$r];
        echo '</td>';   
    }
    echo '</tr>';
}
echo '</table>';
1 голос
/ 06 июня 2011

Вот быстрый и грязный скрипт для получения всей таблицы данных, не зная ее полей:

<?php

$conn = mysql_connect('localhost', 'root', ''); 

$sql = "SELECT * FROM `mysql`.`tables_priv`";
$rs = mysql_query($sql);
$tableText = "<table></table>";
$tableHeader = array();
$tableContent = '';
$tableHeaderSet = false;
while( false !== ($r = mysql_fetch_assoc($rs)))
{
    if(false == $tableHeaderSet)
    {
        $tableHeaderText = "<tr>";
        foreach( $r as $key=>$val)
        {
            $tableHeader[$key] = $key;
            $tableHeaderText .= "<th>$key</th>";
        }
        $tableHeaderText .= "</tr>";

    }
    $tableHeaderSet = true;
    $tableContent .= "<tr>";
    foreach( $tableHeader as $fieldName)
    {
        $tableContent .= "<td>" . $r[ $fieldName ] . "</td>";
    }
    $tableContent .= "</tr>";

}

echo "<table>{$tableHeaderText}{$tableContent}</table>";
?>
1 голос
/ 06 июня 2011

Вы можете:

SELECT `COLUMN_NAME`, `TABLE_NAME`
FROM information_schema.`COLUMNS`
0 голосов
/ 06 июня 2011

Вы можете использовать системные таблицы. Например, в БД Oracle таблица ALL_TAB_COLUMNS содержит информацию о столбцах пользовательских таблиц, представлений и кластеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...