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

NazwaDomyślnieZmiana
mysql.allow_persistent"On"PHP_INI_SYSTEM
mysql.max_persistent"-1"PHP_INI_SYSTEM
mysql.max_links"-1"PHP_INI_SYSTEM
mysql.default_portNULLPHP_INI_ALL
mysql.default_socketNULLPHP_INI_ALL
mysql.default_hostNULLPHP_INI_ALL
mysql.default_userNULLPHP_INI_ALL
mysql.default_passwordNULLPHP_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łaznaczenie
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);
?>

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 numer komunikatu błędu z ostatniej 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

Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:57