XCI. MySQL
Funkcje te umożliwiają dostęp do serwerów baz danych MySQL. Więcej informacji o MySQL można znaleźć na stronie http://www.mysql.com/.
Dokumentacja do MySQL znajduje się pod adresem http://dev.mysql.com/doc/.
Wymagania
Aby funkcje były dostępne, należy skompilować PHP z obsługą MySQL.
Installation
Podając opcję konfiguracyjną --with-mysql umożliwiasz PHP dostęp do baz MySQL. Jeśli użyjesz jej bez podania ścieżki do MySQL, PHP wykorzysta własne biblioteki klienta. W PHP4 obsługa MySQL jest zawsze włączona, więc jeśli nie podasz tej opcji, PHP również użyje wbudowanych bibliotek. Użytkownicy, którzy uruchamiają inne aplikacje korzystające z MySQL (na przykład równocześnie PHP3 i PHP4 jako moduły apache, lub moduł auth-mysql) powinni zawsze podawać ścieżkę do MySQL: --with-mysql=/sciezka/do/mysql. To wymusi na PHP użycie bibliotek zainstalowanych przez MySQL, co pozwoli uniknąć konfliktów.
| Ostrzeżenie |
|
Jeśli to rozszerzenie używane jest razem z rozszerzeniem recode, mogą występować awarie i problemy ze startem PHP. Więcej informacji znajduje się w rozdziale dotyczącym rozszerzenia recode. |
Konfiguracja
Zachowanie funkcji MySQL zależy od ustawień w pliku konfiguracyjnym php.ini.
Tabela 1. Opcje konfiguracyjne MySQL
| Nazwa | Domyślnie | Zmiana |
|---|---|---|
| mysql.allow_persistent | "On" | PHP_INI_SYSTEM |
| mysql.max_persistent | "-1" | PHP_INI_SYSTEM |
| mysql.max_links | "-1" | PHP_INI_SYSTEM |
| mysql.default_port | NULL | PHP_INI_ALL |
| mysql.default_socket | NULL | PHP_INI_ALL |
| mysql.default_host | NULL | PHP_INI_ALL |
| mysql.default_user | NULL | PHP_INI_ALL |
| mysql.default_password | NULL | PHP_INI_ALL |
Oto krótki opis poszczególnych opcji konfiguracyjnych:
- mysql.allow_persistent boolean
-
Czy pozwalać na stałe połączenia z MySQL.
- mysql.max_persistent integer
-
Maksymalna liczba stałych połączeń MySQL na każdy proces.
- mysql.max_links integer
-
Maksymalna liczba połączeń MySQL na proces, włączając w to połączenia stałe.
- mysql.default_port string
-
Domyślny numer portu TCP, który będzie użyty przy łączeniu się z serwerm baz danych, jeśli nie zostanie podany żaden inny. Jeśli nie będzie podany port domyślny, będzie on pobrany ze zmiennej środowiskowej MYSQL_TCP_PORT, wpisu mysql-tcp w pliku /etc/services lub podanej przy kompilacji opcji MYSQL_PORT, w tym właśnie porządku. Pod Win32 użyta będzie tylko stała MYSQL_PORT.
- mysql.default_socket string
-
Domyślna nazwa gniazda, które będzie użyte do łączenia się z lokalnym serwerem baz danych, jeśli nie zostanie podana żadna inna nazwa.
- mysql.default_host string
-
Domyślny serwer, który będzie używany przy łączeniu się z bazą danych, jeśli nie zostanie podany żaden inny. Nie dotyczy trybu bezpiecznego.
- mysql.default_user string
-
Domyślna nazwa użytkownika, która będzie używana przy łączeniu się z Nie dotyczy trybu bezpiecznego.
- mysql.default_password string
-
Domyślne hasło, które będzie użyte przy łączeniu się z serwerem baz danych, jeśli nie zostanie podane żadne inne. Nie dotyczy trybu bezpiecznego.
Rodzaje zasobów
Moduł MySQL wykorzystuje dwa rodzaje zasobów. Pierwszym jest identyfikator połączenia z bazą danych, drugim zaś zasób wyniku, przechowujący rezultat zapytania.
Predefiniowane stałe
Funkcja mysql_fetch_array() używa stałych dla różnych typów tablic wynikowych. Zdefiniowane są następujące stałe:
Tabela 2. Stałe pobierania MySQL
| stała | znaczenie |
|---|---|
| MYSQL_ASSOC | Kolumny są zwracane jako tablica, której indeks stanowią nazwy pól. |
| MYSQL_BOTH | Kolumny są zwracane jako tablica, indeksowana zarówno nazwami pól, jak i numerycznie. |
| MYSQL_NUM | Kolumny są zwracane jako tablica indeksowana numerycznie. Indeks zaczyna się od 0 i wskazuje na pierwsze pole w wyniku. |
| MYSQL_STORE_RESULT | Wynik operacji MySQL jest buforowany. |
| MYSQL_USE_RESULT | Wynik operacji MySQL nie jest buforowany. |
Przykłady
Ten prosty przykład demonstruje jak połączyć się, wykonać zapytanie, wyświetlić wyniki i rozłączyć się z bazą MySQL.
- Spis treści
- mysql_affected_rows -- Zwraca ilość wierszy przetworzonych w poprzedniej operacji MySQL
- mysql_change_user -- Zmienia użytkownika zalogowanego w aktywnym połączeniu
- mysql_client_encoding -- Returns the name of the character set
- mysql_close -- Zamyka połączenie z serwerem MySQL
- mysql_connect -- Otwiera połączenie z serwerem MySQL
- mysql_create_db -- Tworzy bazę MySQL
- mysql_data_seek -- Przesuwa wewnętrzny wskaźnik wyniku
- mysql_db_name -- Pobiera dane wynikowe
- mysql_db_query -- Wysyła zapytanie do bazy MySQL
- mysql_drop_db -- Usuwa bazę MySQL
- mysql_errno -- Zwraca liczbową wartość kodu błędu z poprzedniej operacji MySQL
- mysql_error -- Zwraca tekst komunikatu błędu z ostatniej operacji MySQL
- mysql_escape_string -- Dodaje znaki unikowe na użytek mysql_query
- mysql_fetch_array -- Zapisuje wiersz wyniku w tablicy asocjacyjnej, numerycznej lub w obu
- mysql_fetch_assoc -- Zapisuje wiersz wyniku w tablicy asocjacyjnej
- mysql_fetch_field -- Pobiera z wyniku informacje o kolumnie i zwraca jako obiekt
- mysql_fetch_lengths -- Pobiera długość każdego pola w wierszu wyniku
- mysql_fetch_object -- Zapisuje wiersz wyniku jako obiekt
- mysql_fetch_row -- Zapisuje wiersz wyniku w tablicy wyliczeniowej
- mysql_field_flags -- Pobiera flagi dla danego pola w wyniku
- mysql_field_len -- Zwraca długość danego pola
- mysql_field_name -- Podaje nazwę danego pola w wyniku
- mysql_field_seek -- Przesuwa wskaźnik wyniku do wybranego pola
- mysql_field_table -- Pobiera nazwę tabeli w której znajduje się dane pole
- mysql_field_type -- Pobiera typ podanego pola
- mysql_free_result -- Zwalnia pamięć zajmowaną przez wynik
- mysql_get_client_info -- Pobiera informacje o kliencie MySQL
- mysql_get_host_info -- Pobiera informacje o hoście MySQL
- mysql_get_proto_info -- Pobiera informacje o protokole MySQL
- mysql_get_server_info -- Pobiera informacje o serwerze MySQL
- mysql_info -- Pobiera informacje o ostatnim zapytaniu
- mysql_insert_id -- Podaje numer ID wygenerowany podczas ostatniej operacji INSERT
- mysql_list_dbs -- Pobiera nazwy baz dostępnych na serwerze MySQL
- mysql_list_fields -- Pobiera informacje o polach tabeli MySQL
- mysql_list_processes -- Zwraca listę procesów MySQL
- mysql_list_tables -- Pobiera listę tabel z bazy MySQL
- mysql_num_fields -- Zwraca liczbę pól w wyniku
- mysql_num_rows -- Zwraca liczbę wierszy w wyniku
- mysql_pconnect -- Otwiera stałe połączenie z serwerem MySQL
- mysql_ping -- Sprawdza połączenie z serwerem, lub nawiązuje połączenie, jeśli go nie było
- mysql_query -- Wysyła zapytanie do serwera MySQL
- mysql_real_escape_string -- Dodaje znaki unikowe dla potrzeb poleceń SQL, biorąc po uwagę zestaw znaków używany w połączeniu.
- mysql_result -- Zwraca dane wynikowe
- mysql_select_db -- Wybiera bazę MySQL
- mysql_stat -- Pobiera aktualny stan systemu
- mysql_tablename -- Zwraca nazwę tabeli
- mysql_thread_id -- Zwraca id bieżącego wątku
- mysql_unbuffered_query -- Wysyła zapytanie do serwera MySQL nie pobierając i buforując wyniku
| Poprzedni | Spis treści | Następny |
| muscat_setup | Początek rozdziału | mysql_affected_rows |