Konfiguracja bazy danych
CodeIgniter posiada plik konfiguracyjny, który pozwala na przechowywanie danych połączenia z bazą danych (nazwa użytkownika, hasło, nazwa bazy danych, itp). Lokalizacja pliku jest następująca application/config/database.php. Możesz również ustawić specyficzne właściwości dla danych środowisk przez ustawienie w pliku database.php odpowiednich nazw zmiennych.
Wartości konfiguracyjne ustawiane są w wielowymiarowej tablicy:
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
$db['default']['swap_pre'] = "";
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
Powodem wykorzystania wielowymiarowej tablicy, jest możliwość przechowywania różnych wartości dla różnych zestawów konfiguracyjnych. Jeżeli posiadasz wiele środowisk (developerskie, produkcyjne, testwe, itp.) pracujących na jednej instalacji, możesz ustawić grupę połączeń dla każdego środowiska. Np. dla środowiska testowego konfiguracja może wyglądać tak:
$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = TRUE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
$db['test']['swap_pre'] = "";
$db['test']['autoinit'] = TRUE;
$db['test']['stricton'] = FALSE;
Wtedy, aby system używał tej grupy globalnie, powinieneś ustawić tą zmienną w pliku konfiguracyjnym:
$active_group = "test";
Uwaga: Nazwa "test" jest oczywiście przykładowa. Możesz użyć jakiejkolwiek nazwy. Domyślnie używamy słowa "default" dla głównego połączenia, ale ta nazwa też może zostać zmieniona na taką, która jest bardziej odpowiednia dla Twojego projektu.
Active Record
Klasa Active Record jest globalnie włączana lub wyłączana poprzez ustawienie zmiennej $active_record na TRUE/FALSE (boolean) w pliku konfiguracyjnym bazy danych . Jeśli nie używasz klasy active record, możesz ustawić tę wartość na FALSE, co spowoduje mniejsze zapotrzebowanie na zasoby systemu.
$active_record = TRUE;
Uwaga: Niektóre klasy CodeIgnitera jak np. Sesje, wymagają aby klasa Active Record była włączona, w innym przypadku nie mogą udostępnić niektórych spośród swoich funkcji.
Objaśnienie wartości:
- hostname - Nazwa hosta Twojego serwera bazy danych. Często przyjmuje wartość "localhost".
- username - Nazwa użytkownika używana do połączenia z bazą danych.
- password - Hasło używane do połączenia się z bazą danych.
- database - Nazwa bazy danych, z ktorą chcesz się połączyć.
- dbdriver - Typ bazy danych np: mysql, postgres, odbc, itp. Nazwa musi być pisana małymi literami.
- dbprefix - Opcjonalny prefix dla tabel, który będzie dodany do nazw tabel poczas wykonywania zapytań za pomocą klasy Active Record. Pozwala to na korzystanie z jednej bazy danych, przez wiele instancji CodeIgnitera.
- pconnect - TRUE/FALSE (boolean) - Czy używać stałego połączenia.
- db_debug - TRUE/FALSE (boolean) - Czy błędy bazy danych powinny być wyświetlane.
- cache_on - TRUE/FALSE (boolean) - Czy cache'owanie zapytań jest włączone, zobacz również klasę cache'owania bazy danych.
- cachedir - Ścieżka absolutna do katalogu z cachem dla zapytań bazy danych.
- char_set - Zestaw znaków używany do komunikacji z bazą danych.
- dbcollat - Sortowanie znaków używane podczas komunikacji z bazą danych.
Uwaga: Dla baz danych MySQL i MySQLi, to ustawienie jest wykorzystywane jako backup, jeśli Twój serwer pracuje na PHP w wersji < 5.2.3 lub MySQL < 5.0.7. Istnieje niekompatybilność w PHP dla funkcji mysql_real_escape_string(), która może powodować, że Twoja strona będzie podatna na SQL injection, jeśli używasz wielobajtowego zestawu znaków i posiadasz niższe wersje oprogramowania niż wskazano przed chwilą. Strony używające znakowania i sortowania ustawionych na Latin-1 lub UTF-8 nie są podatne na zagrożenie.
- swap_pre - Domyślny prefix dla tabel, który powinien być zamieniony z dbprefix. Jest to przydatne, dla aplikacji rozproszonych, gdzie mógłbyś chcieć uruchamiać ręcznie napisane zapytania i potrzebował aby prefix mógł być zmieniony przez użytkownika końcowego.
- autoinit - Czy automatycznie łączyć z bazą danych, w momencie kiedy klasa jest ładowana. Jeśli wartość ustawiona jest na false, połączenie będzie wykonane dopiero podczas wykonywania pierwszego zapytania.
- stricton - TRUE/FALSE (boolean) - Czy wymuszać połączenie w trybie "Strict Mode" - dobrym rozwiązaniem jest upewnienie się, że działamy w tym trybie podczas etapu developmentu aplikacji.
- port - Port bazy danych. Aby używać tej wartości, musisz dodać tę linię do pliku konfiguracyjnego bazy danych.
$db['default']['port'] = 5432;
Uwaga: Zależnie od tego jakiej platformy bazodanowej używasz (MySQL, Postgres, itp.) nie wszystkie powyższe wartości będą potrzebne. Dla przykładu, podczas korzystania ze SQLite nie będziesz potrzebował określać nazwy użytkownika oraz hasła, a nazwa bazy danych będzie ścieżką do pliku bazy danych. Informacje przedstawione powyżej zakładają, że używasz bazy MySQL.