Podręcznik PHP
Poprzedni |  | Następny

# LXIV. 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://www.mysql.com/documentation/.

# 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

Aby uzyskać więcej informacji na temat stałych PHP_INI_* zobacz ini_set().

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.

Przykład 1. Wykorzystanie funkcji MySQL
`<?php /* Łączenie i wybranie bazy */ $link = mysql_connect("localhost", "uzytkownik", "haslo") or die ("Nie można się połączyć"); print ("Połączenie nawiązane"); mysql_select_db ("baza") or die ("Nie mozna wybrać bazy danych"); /* Wysyłanie zapytania SQL */ $query = "SELECT * FROM tabela"; $result = mysql_query ($query) or die ("Zapytanie zakończone niepowodzeniem"); /* Wyświetlenie wyników w HTML */ print "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n"; /* Zwalnianie pamięci */ mysql_free_result($result); /* Rozłączanie */ mysql_close($link); ?>`

Poprzedni | Spis treści | Następny
msql | Początek rozdziału | mysql_affected_rows