Получить данные из базы данных и отобразить их в таблице с помощью php

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

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

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

Итак, вопрос:

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

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

Возможный дубликат Запрос MySQL для получения имен столбцов?

ssemilla 08.11.2018 16:30

@ssemilla Думаю, вы не поняли вопроса. В базе данных много таблиц. Пользователь может запросить любую таблицу во время выполнения, поэтому имя таблицы неизвестно. Возможный повторяющийся вопрос, который вы указали, предполагает, что имя таблицы уже известно!

Pritam Parab 08.11.2018 16:46

Вы должны были указать, что пользователю также неизвестны имена таблиц. В любом случае вам просто нужно запросить имена таблиц, например. SELECT table_name FROM information_schema.tables; и объедините это с ответами в stackoverflow.com/questions/8334493/…

ssemilla 08.11.2018 17:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
1 015
3

Ответы 3

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

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

Спасибо за ответ, но я нашел другой способ получить количество полей в таблице. То есть mysqli_num_fields ($ result). Теперь все, что я хочу получить, получить заголовки этих столбцов

Pritam Parab 08.11.2018 16:51

DESC "TABLE_NAME" возвращает несколько записей, и одна из них [Поле] - это имя этих столбцов. Разве это не ответ на вашу проблему?

8biT 08.11.2018 17:00

Используйте 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'];
}

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

Pritam Parab 08.11.2018 16:50

Нет. Первый запрос извлекает имена столбцов. Цикл foreach сообщает каждое имя. Вы пробовали то, что я опубликовал?

Dave 08.11.2018 17:05

Единственная необходимая информация, которую, как вы сказали, запрашивает ваш веб-сайт, - это имя таблицы.

Dave 08.11.2018 17:20

Итак, я получил ответ на свой вопрос из документации 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)

Другие вопросы по теме