Получить данные из базы данных и отобразить их в таблице с помощью php - PullRequest
0 голосов
/ 08 ноября 2018

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

У меня есть текстовый тип ввода в html, в котором пользователь может напрямую манипулировать базой данных. Пользователь может запросить любую таблицу в базе данных. Все таблицы имеют разные имена столбцов и количество столбцов. И я не могу использовать оператор sql 'description' и 'show column', поскольку имя столбца неизвестно.

Все ответы на этот вопрос считает, что программист уже знает имя столбца и количество столбцов в таблице.

Так что вопрос:

  1. как узнать количество столбцов в таблице?

  2. как получить имена столбцов таблицы для отображения в теге заголовка таблицы?

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

Используйте SHOW COLUMNS FROM your_table_name_here, и когда вы получите результаты, подсчет количества строк скажет вам, сколько существует столбцов.

Часть возвращаемых данных включает в себя имя столбцов, которые вы можете использовать для заголовков таблицы.

$ColsQ = $yourdb->prepare('SHOW COLUMNS FROM ' . $your_table_name_here);
$ColsQ->execute();
$ColsD = $ColsQ->fetchAll(PDO::FETCH_ASSOC);

echo 'There are ' . count($ColsD) . ' columns in the table';

foreach ($ColsD as $Column) {
    echo 'Column name is ' . $Column['Field'];
}
0 голосов
/ 08 ноября 2018

Итак, я получил ответ на свой вопрос из документации php! Здесь я опубликую фрагмент моего кода, который выполняет оператор SELECT «SQL», написанный во время выполнения, который показывает заголовок плюс записи таблицы из результата, который я получил от выполнения запроса.

      if(strcmp($words[0], "select")==0) //for making sure its select statement
    {
        $result= mysqli_query($conn, $sql);
        if($result)
        {
            echo '<table border=1 style="border-collaspe=collaspe" class="table table-striped table-bordered table-hover dataTable no-footer">';
            echo '<tr>';
            for($i=0;$i<mysqli_num_fields($result);$i++)
            {
                $column_info=mysqli_fetch_field_direct($result, $i); 
               /*this function returns all the information about table metioned in the query.
               variable i over here refers to field no*/
                echo "<th>".$column_info->name."</th>"; //here fetching only name from whole information
            }
            echo '</tr>';
            while ($row = mysqli_fetch_array($result))
            {
                echo '<tr>';
                for($i=0;$i<mysqli_num_fields($result);$i++)
                {
                    echo '<td>'.$row[$i].'</td>';
                }
                echo '</tr>';
            }
            echo '</table>';
        }
        else
        {
            echo "<script>alert('Error occured, Please check your syntax or internet connection')</script>";
        }
    }

Для подробной информации: Страница документации PHP для функции mysqli_fetch_field_direct (mysqli_result $ result, int $ fieldnr)

0 голосов
/ 08 ноября 2018

Вы можете использовать DESC TABLE_NAME.

Повторите возврат, чтобы узнать количество полей.

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