Как получить имена столбцов результата, возвращаемого запросом выбора - PullRequest
0 голосов
/ 09 декабря 2018

Я создаю инструмент отчетности, где пользователь может ввести запрос SQL, и инструмент вернет результаты в файле CSV.В дополнение к простой записи в файл CSV, мне также необходимо выполнить некоторую дополнительную логику здесь.Так что SELECT INTO OUTFILE не будет работать для меня.

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

Теперь, когда я экспортирую данные в формате CSV, я также хочу вывести имена столбцов запроса в качестве первой строки в файле CSV.

Итак, мой вопрос: есть ли способ извлечь имена столбцов SQL-запроса в PHP с помощью PDO?

Клиентские инструменты Mysql, такие как Sequel Pro, могут отображать имена столбцов при отображении результатов запроса.Поэтому я предполагаю, что это возможно, но я не могу его найти.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Здесь я не пишу полный код подключения PDO.Вы можете использовать приведенный ниже код / ​​логику, чтобы получить имя возвращаемого столбца.

$stmt = $conn->query("SELECT COUNT(*), first_column, second_column FROM table_name");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$columns = array_keys($row);

print_r($columns); // array(0 => COUNT(*), 1 => first_column, 2 => second_column) 
0 голосов
/ 09 декабря 2018

Ключами результата строки являются имена столбцов.Вы можете отобразить их следующим образом:

$conn = mysqli_connect(YOUR_CONNECTION_INFO);
$result = mysqli_query($conn, YOUR_QUERY);
$row = mysqli_fetch_assoc($result);

foreach ($row as $key=>$value) {
    echo $key;
}

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

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

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