Podręcznik PHP
Poprzedni |  | Następny

# LXXIX. 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

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
muscat_setup | Początek rozdziału | mysql_affected_rows