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


Język PHP to dzisiaj powszechnie przyjęty standard, podstawa tworzenia dynamicznych stron WWW, opartych na bazach danych.

PHP to język skryptowy. Znaczy to, że jest to język nie kompilowalny. Program jest wykonywany przez interpreter na podstawie jego kodu źródłowego. Język PHP to element technologii internetowej SERVER-SIDE. Znaczy to, że kod języka jest wykonywany od strony serwera (na serwerze).

W jakim celu używac PHP? Po co to komu?

Załóżmy, że potrzebujemy takiej strony internetowej, która wyświetli zawsze bieżącą datę. Dzięki technologii PHP, datę i godzinę odczytywać można z miejsca gdzie wykonuje się skrypt, np. gdy serwer znajduje się w USA a my w Polsce to widoczna jest różnica w czasie który zostanie wyświetlony.

hosting seo lampy nowoczesne Auto Surf Free zdepolar namiot dwuosobowy colemanwizy do rosji gdańsk, wiza do rosji, suknie weselne, Gotowe projekty, zagęszczanie włosów, serwery wirtualne, kolonie