Выгрузка данных mysql php

Экспорт данных из таблицы MySQL в Excel

Если нужно быстро и единоразово выгрузить данные из таблицы MySQL в Exel файл, то помогут следующие способы:

Экспорт через PHPMyAdmin

В PHPMyAdmin при экспорте можно выбрать формат «CSV for MS Excel»:

Экспорт через PHPMyAdmin

Excel будет сбита кодировка

Notepad++ изменить кодировку на ANSI:

Результат:

Экспорт через HTML таблицу

prepare(«SELECT * FROM `test`»); $sth->execute(); $items = $sth->fetchAll(PDO::FETCH_ASSOC); ?>

ID Категория Название Описание

Результат работы скрипта:

Экспорт через PHPExcel

//spl_autoload_unregister('autoload'); require_once __DIR__ . '/PHPExcel/Classes/PHPExcel.php'; require_once __DIR__ . '/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php'; $xls = new PHPExcel(); $xls->setActiveSheetIndex(0); $sheet = $xls->getActiveSheet(); // Шапка $sheet->getStyle("A1:D1")->getFont()->setBold(true); $sheet->setCellValue("A1", 'ID'); $sheet->setCellValue("B1", 'Категория'); $sheet->setCellValue("C1", 'Название'); $sheet->setCellValue("D1", 'Описание'); // Выборка из БД $dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль'); $sth = $dbh->prepare("SELECT * FROM `test`"); $items = $sth->fetch(PDO::FETCH_ASSOC); $index = 2; foreach ($items as $row) < $sheet->setCellValue("A" . $index, $row['id']); $sheet->setCellValue("B" . $index, $row['category']); $sheet->setCellValue("C" . $index, $row['name']); $sheet->setCellValue("D" . $index, $row['name']); $index++; > // Отдача файла в браузер header("Expires: Mon, 1 Apr 1974 05:00:00 GMT"); header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-type: application/vnd.ms-excel" ); header("Content-Disposition: attachment; filename=prods.xlsx"); $objWriter = new PHPExcel_Writer_Excel2007($xls); $objWriter->save('php://output'); exit(); 

Источник

PHP – выгрузка данных в Excel из базы MySQL

У многих при работе с PHP в связке с MySQL возникает такая потребность, как экспорт данных из базы в формат xls, для того чтобы люди, которым нужны эти данные, обрабатывали их в программе Excel или просто пользователям было удобно смотреть эти данные. Недавно у меня возникла такая потребность и сегодня я расскажу, как это дело можно реализовать.

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

Для начала приведу пример конечного xls файла, в программе Excel выгрузка будет выглядеть примерно так:

Скриншот 1

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

До того как я пришел именно к такому варианту выгрузки я пробовал выгружать в формат csv, но получалось немного коряво, потом пробовал отрисовывать таблицу и сохранять ее с расширением xls, также получалось какая-то ерунда, способ, который я сейчас опишу, меня полностью устроил, и сейчас с Вами я им поделюсь.

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

Курс по SQL для начинающих

Экспорт данных из MySQL в Excel на PHP

А еще чтобы Вы понимали, какие данные я выгружаю, приведу пример простой таблицы в БД (у меня ее название test):

Тестовая таблица:

id firstname name
1 Иванов Иван
2 Петров Петр
2 Петров2 Петр2
xlsData = pack( "ssssss", 0x809, 0x08, 0x00,0x10, 0x0, 0x0 ); > // Если число function RecNumber( $row, $col, $value )< $this->xlsData .= pack( "sssss", 0x0203, 14, $row, $col, 0x00 ); $this->xlsData .= pack( "d", $value ); return; > //Если текст function RecText( $row, $col, $value )< $len = strlen( $value ); $this->xlsData .= pack( "s*", 0x0204, 8 + $len, $row, $col, 0x00, $len); $this->xlsData .= $value; return; > // Вставляем число function InsertNumber( $value )< if ( $this->countCol == $this->totalCol ) < $this->countCol = 0; $this->countRow++; > $this->RecNumber( $this->countRow, $this->countCol, $value ); $this->countCol++; return; > // Вставляем текст function InsertText( $value )< if ( $this->countCol == $this->totalCol ) < $this->countCol = 0; $this->countRow++; > $this->RecText( $this->countRow, $this->countCol, $value ); $this->countCol++; return; > // Переход на новую строку function GoNewLine()< $this->countCol = 0; $this->countRow++; return; > //Конец данных function EndData()< $this->xlsData .= pack( "ss", 0x0A, 0x00 ); return; > // Сохраняем файл function SaveFile( $fileName )< $this->fileName = $fileName; $this->SendFile(); > // Отправляем файл function SendFile()< $this->EndData(); header ( "Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT" ); header ( "Cache-Control: no-store, no-cache, must-revalidate" ); header ( "Pragma: no-cache" ); header ( "Content-type: application/x-msexcel" ); header ( "Content-Disposition: attachment; fileName=$this->fileName.xls" ); print $this->xlsData; > > > if(isset($_GET['id'])) < //фильтруем данные $id = mysql_real_escape_string(stripslashes(trim(htmlspecialchars($_GET['id'],ENT_QUOTES)))); $filename = 'Файл_с_id_'.$id; // задаем имя файла $excel = new ExportToExcel(); // создаем экземпляр класса $sql="SELECT * FROM test.test where к базе $rez=mysql_query($sql); $excel->InsertText('Идентификатор'); $excel->InsertText('Фамилия'); $excel->InsertText('Имя'); $excel->GoNewLine(); While($row=mysql_fetch_assoc($rez))< $excel->InsertNumber($row['id']); $excel->InsertText($row['firstname']); $excel->InsertText($row['name']); $excel->GoNewLine(); > $excel->SaveFile($filename); > ?>

Вся идея здесь заключается в функции pack(), которая упаковывает данные в бинарную строку, а мы в свою очередь последовательно заполняем эту строку данными, которые мы выгрузили из базы данных MySql с помощью обычной функции mysql_query().

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

http://ваш_сайт/название _файла. php?id=2

И у Вас должно выгрузиться две строки с id равным 2.

И теперь каждый, которому Вы разрешите выгружать данные может легко экспортировать их на свой локальный компьютер через web интерфейс. Данный способ удобен как для корпоративных пользователей, если Вы разрабатываете приложение для своей организации, так и для пользователей Вашего web сайта в Интернете. Надеюсь, данный способ Вам помог. Удачи!

Заметка! Если Вас интересует язык SQL, рекомендую пройти мой онлайн-курс по основам SQL, который ориентирован на изучение SQL как стандарта, таким образом, Вы сможете работать в любой системе управления базами данных. Курс включает много практики: онлайн-тестирование, задания и многое другое.

Источник

Как вывести данные из MySQL – руководство для не шаманов

От автора: что вы мобильник так трясете? Письмо пришло на почтовый ящик, а вы его прочитать не можете? Понятно! Вы бы еще, чтобы вывести данные из MySQL, с бубном возле ПК побегали. После «изъятия» письма этим и собирались заняться, и даже бубен прихватили? Ну ладно, не буду мешать. А для остальных «не шаманов» расскажу, как «вынуть» данные из MySQL без бубна.

Средства вывода phpMyAdmin

Отложите пока в сторону бубен, глаза ползучего питона и ожерелье из мухоморов. Опробуем для получения информации из БД менее «магические» способы. Начнем с рассмотрение возможностей, которые предоставляет для этого оболочка phpMyAdmin. Запускаем программу, слева в списке выбираем нужную базу. Чтобы вывести данные из таблицы MySQL, в основном верхнем меню переходим в раздел «Обзор». После этого получаем содержимое выбранной таблицы.

В результате нам удалось в три щелчка получить доступ к содержимому нужной базы данных. Но что-то выбранная для экспериментов БД уж слишком приелась. Конечно, все мы любим «зверюшек», но от наших «танцев с бубнами» они все быстро разбегутся. Нелегкое это дело «шаманство» 🙂

Чтоб не мучатся с созданием новой БД и не тратить понапрасну драгоценное время, скачаем готовую базу с официального ресурса MySQL. А сэкономленные таким образом минуты потратим на обучение «волшебству» администрирования СУБД. Установка скачанной базы происходит в phpMyAdmin через вкладку «Импорт».

Онлайн курс «PHP-разработчик»

Изучите курс и создайте полноценный проект — облачное хранилище файлов

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

Импортированная БД «World» содержит намного больше информации, и поэтому более интересна для обучения (на случай, если мы заскучаем во время освоения материала). Ее «потенциал» можно увидеть, открыв любую из ее таблиц. Например, «City»:

Окунаемся в язык структурированных запросов

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

В языке структурированных запросов для вывода отсортированных данных используется оператор SELECT. Его синтаксис:

Источник

Простой импорт/экспорт в CSV для PHP & MySQL

В ходе разработки сервиса по расчете статистики по управлению запасами для интернет-магазинов возникла задача быстро организовать импорт/экспорт таблиц между разными MySQL серверами. Поскольку надо было сделать просто и прозрачно — оптимизация будет впереди — решил воспользоваться авторскими рекомендация из документации по MySQL 5.0.

В качестве формата обмена данными решил принять CSV именно по причине простоты реализации.

В итоге, получилось две функции

 function export_csv( $table, // Имя таблицы для экспорта $afields, // Массив строк - имен полей таблицы $filename, // Имя CSV файла для сохранения информации // (путь от корня web-сервера) $delim=',', // Разделитель полей в CSV файле $enclosed='"', // Кавычки для содержимого полей $escaped='\\', // Ставится перед специальными символами $lineend='\\r\\n') < // Чем заканчивать строку в файле CSV $q_export = "SELECT ".implode(',', $afields). " INTO OUTFILE '".$_SERVER['DOCUMENT_ROOT'].$filename."' ". "FIELDS TERMINATED BY '".$delim."' ENCLOSED BY '".$enclosed."' ". " ESCAPED BY '".$escaped."' ". "LINES TERMINATED BY '".$lineend."' ". "FROM ".$table ; // Если файл существует, при экспорте будет выдана ошибка if(file_exists($_SERVER['DOCUMENT_ROOT'].$filename)) unlink($_SERVER['DOCUMENT_ROOT'].$filename); return mysql_query($q_export); >
  • Файл можно создать на том же хосте, где расположен MySQL. Если ОС настроена с возможностью на сетевой диск с общим доступом, можно писать и на другой сервер.
  • Если поле в таблице равно NULL, в CSV файле будет выведено \N.
  • Для записи файла на локальный диск на сервере пользователю требуются права FILE не на уровне БД, а глобально на уровне сервера MySQL. Можно установить через PHPMyAdmin или запросом
GRANT FILE ON * . * TO 'username'@'localhost' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
 function import_csv( $table, // Имя таблицы для импорта $afields, // Массив строк - имен полей таблицы $filename, // Имя CSV файла, откуда берется информация // (путь от корня web-сервера) $delim=',', // Разделитель полей в CSV файле $enclosed='"', // Кавычки для содержимого полей $escaped='\\', // Ставится перед специальными символами $lineend='\\r\\n', // Чем заканчивается строка в файле CSV $hasheader=FALSE) < // Пропускать ли заголовок CSV if($hasheader) $ignore = "IGNORE 1 LINES "; else $ignore = ""; $q_import = "LOAD DATA INFILE '". $_SERVER['DOCUMENT_ROOT'].$filename."' INTO TABLE ".$table." ". "FIELDS TERMINATED BY '".$delim."' ENCLOSED BY '".$enclosed."' ". " ESCAPED BY '".$escaped."' ". "LINES TERMINATED BY '".$lineend."' ". $ignore. "(".implode(',', $afields).")" ; return mysql_query($q_import); >
  1. Короткие и очень быстрые функции, за счет того, что выполняются одним MySQL запросом.
  2. Довольно гибкая реализация — можно легко управлять множеством параметров, в том числе и списком полей
  3. Для экспорта: путем изменения списка полей в массиве полей

или использования подзапроса вместо имени таблицы (тогда в массиве будут указаны поля этого подзапроса) — например,

(select field1, field1 from table2) t
array("column1", "@dummy", "column2", "@dummy", "column3")

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

Источник

Вывод данных из MySql на PHP

Счетчик PR-CY.Rank

Первое, что нам следует сделать для того, чтобы получить данные из таблицы базы данных, — установить соединение с БД.

Извлечь данные из таблицы MySql

После того, как мы установили соединение с БД, c помощью запроса можно получить данные из любой таблицы. А с помощью цикла while их вывести.

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

mysqli_connect

mysqli_connect(, , , ) — устанавливает соединение с базой данных.

mysqli_query

mysqli_query(, ) — выполняет запрос к БД, написанный на языке SQL.

mysqli_fetch_array

mysqli_fetch_array() — поочередно возвращает по одной строке из результата запроса.

Вывод переменной врутри строки

Заметьте, что если вы выводите строку оператором echo и строка заключена в двойные кавычки (именно двойные), то внутрь строки можно вставлять переменные в фигурных скобках и они будут подставленны в этот шаблон. Круто, да?

Крутов Герман

Понравилась или помогла статья? Самое лучшее, что ты можешь сделать — это поделиться ею в любой из своих соцсетей (даже если ты поделишься в твиттере или google+, которыми ты не пользуешься — это очень поможет развитию моего блога). Спасибо! А если ты еще и оставишь любой комментарий снизу в обсуждениях, то это будет двойное СПАСИБО!

Ссылка на статью на всякий случай:

PersonКрутов Герман © 2009-2023 Emailkrutovgerman2007@ya.ru VK SocialЯ ВКонтате

Источник

Читайте также:  Php тип параметра функции
Оцените статью