Podręcznik użytkownika CodeIgniter wersja 2.2.1


Klasa narzędziowa bazy danych

Klasa narzędziowa bazy danych zawiera funkcje, które pomagają zarządzać Twoją bazą danych.

Spis treści

Ładowanie klasy narzędziowej

Ważne:  Podczas ładowania klasy narzędziowej, driver dla bazy danych musi być już załadowany, ponieważ klasa narzędziowa zależy od niego.

Załaduj klasę narzędziową w ten sposób:

$this->load->dbutil()

Po załadowaniu klasy, będziesz miał dostęp do jej funkcji za pomocą obiektu $this->dbutil:

$this->dbutil->jakas_funkcja()

$this->dbutil->list_databases()

Zwraca tablicę z nazwami baz danych:

$dbs = $this->dbutil->list_databases();

foreach ($dbs as $db)
{
    echo $db;
}

$this->dbutil->database_exists();

Czasami dobrze jest wiedzieć, czy konkretna baza danych istnieje. Zwraca TRUE/FALSE (boolean). Przykład użycia:

if ($this->dbutil->database_exists('nazwa_bazy_danych'))
{
   // jakiś kod...
}

Uwaga: Zamień nazwa_bazy_danych na nazwę bazy danych, której szukasz. Wielkość liter parametru ma znaczenie.

$this->dbutil->optimize_table('nazwa_tabeli');

Uwaga:  Ta funkcja jest dostępna tylko dla driverów MySQL/MySQLi.

Pozwala na optymalizację tabeli, przyjmując jej nazwę jako pierwszy parametr. Zwraca TRUE/FALSE zależnie od sukcesu lub porażki:

if ($this->dbutil->optimize_table('nazwa_tabeli'))
{
    echo 'Sukces!';
}

Uwaga: Nie wszystkie platformy bazodanowe wspierają optymalizację tabel.

$this->dbutil->repair_table('nazwa_tabeli');

Uwaga:  Ta funkcja jest dostępna tylko dla driverów MySQL/MySQLi.

Pozwala na naprawę tabeli, przyjmując jej nazwę jako pierwszy parametr. Zwraca TRUE/FALSE zależnie od sukcesu lub porażki:

if ($this->dbutil->repair_table('nazwa_tabeli'))
{
    echo 'Sukces!';
}

Uwaga: Nie wszystkie platformy bazodanowe wspierają naprawę tabel.

$this->dbutil->optimize_database();

Uwaga:  Ta funkcja jest dostępna tylko dla driverów MySQL/MySQLi.

Pozwala na optymalizację bazy danych, do której jesteś aktualnie podłaczony. Zwraca tablicę zawierającą wiadomość ze statusem z bazy danych lub wartość FALSE w przypadku niepowodzenia.

$result = $this->dbutil->optimize_database();

if ($result !== FALSE)
{
    print_r($result);
}

Uwaga: Nie wszystkie platformy bazodanowe wspierają optymalizację bazy danych.

$this->dbutil->csv_from_result($db_result)

Pozwala na wygenerowanie pliku CSV z wyniku zapytania. Pierwszy parametr funkcji musi zawierać obiekt wyniku zapytania. Przykład:

$this->load->dbutil();

$query = $this->db->query("SELECT * FROM mojatabela");

echo $this->dbutil->csv_from_result($query);

Drugi i trzeci parametr pozwalają na ustalenie znaku separatora i nowej linii. Domyślnie znak tab jest ustawiony jako separator, a znak "\n" jako nowa linia. Przykład:

$delimiter = ",";
$newline = "\r\n";

echo $this->dbutil->csv_from_result($query, $delimiter, $newline);

Ważne:  Ta funkcja NIE zapisze za Ciebie pliku CSV. Tworzy tylko układ CSV. Jeśli chcesz zapisać plik, użyj helpera File.

$this->dbutil->xml_from_result($db_result)

Pozwala na wygenerowanie pliku XML z wyniku zapytania. Pierwszy parametr funkcji musi zawierać obiekt wyniku zapytania. Drugi może zawierać opcjonalną tablicę konfiguracyjną. Przykład:

$this->load->dbutil();

$query = $this->db->query("SELECT * FROM mojatabela");

$config = array (
                  'root'    => 'root',
                  'element' => 'element',
                  'newline' => "\n",
                  'tab'    => "\t"
                );

echo $this->dbutil->xml_from_result($query, $config);

Ważne:  Ta funkcja NIE zapisze za Ciebie pliku XML. Tworzy tylko układ XML. Jeśli chcesz zapisać plik, użyj helpera File.

$this->dbutil->backup()

Pozwala na wykonanie kopii całej bazy danych lub pojedynczej tabeli. Kopia zapasowa może zostać skopresowana do formatu Zip lub Gzip.

Uwaga:  Ta funkcja jest dostępna tylko dla baz MySQL.

Uwaga: W związku z limitem czasu wykonywania i dostępnej ilości pamięci dla PHP, wykonywanie kopii bardzo dużej bazy danych może nie być możliwe. Jeśli Twoja baza danych jest bardzo duża, być może będziesz zmuszony wykonać kopię zapasową bezpośrednio z serwera SQL, za pomocą linii komend lub poprosić, aby zrobił to za Ciebie administrator serwera, jeśli nie dysponujesz uprawnieniami roota.

Przykłady użycia

// Ładuje klasę narzędziową
$this->load->dbutil();

// Wykonuje kopię zapasową Twojej całej bazy danych i przypisuje ją do zmiennej
$backup =& $this->dbutil->backup();

// Ładuje helper file i zapisuje plik na Twoim serwerze
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);

// Ładuje helper download i wysyła plik na Twój komputer
$this->load->helper('download');
force_download('mybackup.gz', $backup);

Ustawianie preferencji kopii zapasowej

Preferencje kopii zapasowej są ustalane poprzez wysłanie tablicy wartości do pierwszego parametru funkcji. Przykład:

$prefs = array(
                'tables'      => array('table1', 'table2'),  // Tablica tabel do wykonania kopii zapasowej.
                'ignore'      => array(),           // Lista tabel, które mają zostać pominięte w procesie wykonywania kopii zapasowej
                'format'      => 'txt',             // gzip, zip, txt
                'filename'    => 'mybackup.sql',    // nazwa pliku - POTRZEBNA TYLKO PRZY PLIKACH ZIP
                'add_drop'    => TRUE,              // Czy dodać polecenie DROP TABLE do kopii zapasowej
                'add_insert'  => TRUE,              // Czy dodać polecenie INSERT do kopii zapasowej
                'newline'     => "\n"               // Znak nowej linni używany w pliku kopii zapasowej
              );

$this->dbutil->backup($prefs);

Opis preferencji kopii zapasowej

Preference Default Value Options Description
tablesempty arrayNoneTablica z listą tabel, z których ma być wykonana kopia zapasowa. Pozostawiona pust, bierze pod uwagę wszystkie tabele.
ignoreempty arrayNoneTablica z listą tabel, które mają zostać pominięte w procesie wykonywania kopii zapasowej.
formatgzipgzip, zip, txtFormat pliku dla eksportowanego pliku.
filenamethe current date/timeNoneNazwa dla pliku z kopią zapasową. Nazwa jest potrzebna tylko, jeśli używasz kompresii zip.
add_dropTRUETRUE/FALSECzy dodać polecenia DROP TABLE do pliku SQL kopii zapasowej.
add_insertTRUETRUE/FALSECzy dodać polecenia INSERT do pliku SQL kopii zapasowej.
newline"\n""\n", "\r", "\r\n"Typ znaku nowej linii używany w pliku SQL kopii zapasowej.