Как достать из базы данных имя документа txt и текст? - MySQL
Формулировка задачи:
У меня есть база данных
MySQL
, там есть два столбика третийtitle
(содержащий названиедокумента
.txt
) и четвертыйnote
(содержащий текстдокумента
.txt
). Как мне достать их все в документы.txt
так, чтобы третий столбик задавал бы имядокумента
, четвертый задавал бы содержаниедокумента
.txt
? И так к каждой строчке?Решение задачи: «Как достать из базы данных имя документа txt и текст?»
textual
Листинг программы
<?php
$path = ''; // директория, куда сохранять
$dbname = 'database'; // путь до базы
$table = 'notes'; // таблица с записями
$db = new \PDO('sqlite:'.$dbname);
SaveNotes($db, $path, $table);
class TextFile
{
private $title = '';
private $note = '';
public function __construct($title, $note)
{
$this->title = $title;
$this->note = $note;
}
public function fileName($dir)
{
return $dir . $this->title . '.txt';
}
public function saveTo($dir = '')
{
file_put_contents($this->fileName($dir), $this->note);
}
}
function SaveNotes(\PDO $db, $dir = '', $table = 'notes')
{
/** @var \PDOStatement $notes */
$notes = $db->query('SELECT `title`, `note` FROM '.$table);
/** @var \TextFile $note */
while ($note = $notes->fetchObject(TextFile::class)) {
$note->saveTo($dir);
}
}
Объяснение кода листинга программы
- Объявлены переменные:
- $path - пустая строка для хранения пути к директории, куда будут сохраняться файлы.
- $dbname - строка с путем до базы данных.
- $table - строка с именем таблицы в базе данных, где хранятся заметки.
- $db - объект класса \PDO, который представляет подключение к базе данных SQLite и выполняет SQL-запросы.
- Выполняется SQL-запрос SELECT
title,noteFROM notes с помощью метода query() объекта $db. Полученный результат сохраняется в переменной $notes. - В цикле while происходит следующее:
- Создается объект класса TextFile с помощью оператора new.
- Полученные из базы данных значения
titleиnoteпередаются в качестве аргументов в конструктор класса TextFile. - Метод saveTo() вызывается для каждого объекта TextFile, передавая в качестве аргумента путь к директории, где нужно сохранить файл.
- Метод saveTo() объекта TextFile записывает содержимое заметки в файл с помощью функции file_put_contents(). Путь к файлу формируется с помощью метода fileName().
- Значения переменных $path, $dbname, $table определены в начале скрипта.