LXIII
.
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
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
|
|
Kolumny
są
zwracane
jako
tablica
,
której
indeks
stanowią
nazwy
pól
.
|
|
Kolumny
są
zwracane
jako
tablica
,
indeksowana
zarówno
nazwami
pól
,
jak
i
numerycznie
.
|
|
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)
;
?
|
|