PHP kézikönyv
Előző |  | Következő

# XCI. MySQL függvények

# Bevezetés

E függvények segítségével érheted el a MySQL adatbázisokat. A MySQL-ről további információt a http://www.mysql.com/ címen találsz. A MySQL dokumentációját pedig a http://dev.mysql.com/doc/ címen találod.

# Követelmények

Ahhoz, hogy ezeket a függvényeket használhasd, a PHP-t MySQL támogatással kell lefordítanod.

# Telepítés

A fordításhoz egyszerûen használható a --with-mysql=[DIR] konfigurációs kapcsoló, ahol a [DIR] arra a könyvtárra mutat, ahova a MySQL telepítve van.

Ez a MySQL kiterjesztés nem támogatja a 4.1.0-nál nagyobb verziószámú MySQL teljes szolgáltatáskészletét. Ehhez használd a MySQLi-t.

Ha szeretnéd a mysql és a mysqli kiterjesztéseket együtt használni, akkor ugyanazt a kliens könyvtárat kell használnod a konfliktusok elkerülése végett.

## Telepítés Linux rendszereken

### PHP 4

PHP 4-ben a --with-mysql opció alapértelmezett esetben be van állítva, de kikapcsolhatod a --without-mysql konfigurációs beállítással. Ha a MySQL engedélyezve van és nem adod meg az opció után a MySQL elérési útvonalát, akkor a php a beépített MySQL kliens könyvtárat fogja használni. Windows esetén nincsen DLL, egyszerûen be van építve a PHP 4-be.

Azok a felhasználók, akik más alkalmazásokat is használnak, amelyek mysql-t használnak (például auth-mysql-t), akkor mindig meg kell adni a mysql elérési útvonalát a --with-mysql=/path/to/mysql formában. Ez ki fogja kényszeríteni, hogy a meglévõ mysql kliens könyvtárat használja a php, elkerülve az ebbõl adódó ütközéseket.

### PHP 5+

A MySQL nincs alapértelmezetten beállítva, mint ahogyan a MySQL kliens könyvtár sincs beépítve. Ennek okait ebben a Gy.I.K.-ban találod. Ha szeretnél MySQL támogatást, használd a --with-mysql[=DIR] konfigurációs kapcsolót.

## Telepítés Windows rendszereken

### PHP 4

A PHP MySQL kiterjesztés a PHP-be bele van fordítva.

### PHP 5+

A MySQL alapértelmezésben nincs beállítva, ezért a `php.ini`-ben a `php_mysql.dll` DLL-t engedélyezni kell A PHP-nek hozzá kell férnie a MySQL kliens könyvtárhoz is. A Windows-os terjesztésben létezik egy `libmysql.dll` nevû fájl, ahhoz hogy a PHP tudjon a MySQL-el kommunikálni, ez a fájl elérhetõ kell legyen a Windows PATH-ban. Lásd az ide kapcsolódó FAQ-t: Hogyan adjam hozzá a PHP könyvtáramat a Windows PATH-hoz. Annak ellenére, hogy a `libmysql.dll` a Windows rendszerkönyvtárba való másolása is mûködik (mivel a rendszerkönyvtár alapesetben eleme a PATH-nak) , ez nem ajánlott.

Mint bármilyen PHP kiterjesztés aktiválásakor (mint pl. `php_mysql.dll`), az extension_dir PHP direktíva arra a könyvtárra kell mutasson, ahol a PHP kiterjesztések találhatóak. Lásd még: A PHP kézi telepítése Windows-ra. Egy példa az extension_dir értékére PHP 5 esetén: c:\php\ext

> Megjegyzés: Ha a webszerver indításakor a következõhöz hasonló hibát kapsz: "Unable to load dynamic library './php_mysql.dll'", ez azért van, mert a `php_mysql.dll` és/vagy a `libmysql.dll` fájlokat nem találja.

## MySQL telepítési megjegyzések

Figyelem
A mysql és a recode kiterjesztések együttes használata esetén, betöltésekor elõfordulhatnak PHP összeomlás- és indulási problémák. Lásd a recode kiterjesztést.

> Megjegyzés: Ha a latin (default) helyett más karakterkészletet szeretnél használni, külsõ (nem beépített), karakterkészlet támogatással fordított libmysql-t kell használnod.

# Futásidejű beállítások

Az alábbi függvények viselkedése befolyásolható a `php.ini` segítségével.

A MySQL függvények viselkedését a globális `php.ini` nevû konfigurációs fájlban tudod beállítani.

Táblázat 1. MySQL konfigurációs beállítások

Név | Alapértelmezés | Hol állítható | Változások
--- | --- | --- | ---
mysql.allow_persistent | "1" | PHP_INI_SYSTEM |
mysql.max_persistent | "-1" | PHP_INI_SYSTEM |
mysql.max_links | "-1" | PHP_INI_SYSTEM |
mysql.trace_mode | "0" | PHP_INI_ALL | A PHP 4.3.0.-tól létezik
mysql.default_port | NULL | PHP_INI_ALL |
mysql.default_socket | NULL | PHP_INI_ALL | A PHP 4.0.1.-tõl létezik
mysql.default_host | NULL | PHP_INI_ALL |
mysql.default_user | NULL | PHP_INI_ALL |
mysql.default_password | NULL | PHP_INI_ALL |
mysql.connect_timeout | "60" | PHP_INI_ALL | PHP <= 4.3.2. esetében PHP_INI_SYSTEM. A PHP 4.3.0-tól létezik.

További részletekért és a PHP_INI_* konstansok definícióiért lásd: G Függelék.

A témába vágó konfigurációs direktívák rövid leírása

mysql.allow_persistent boolean

  Állandó kapcsolatok engedélyezése.

mysql.max_persistent integer

  Az állandó MySQL kapcsolatok maximális száma folyamatonként.

mysql.max_links integer

  A MySQL kapcsolatok maximális száma folyamatonként. (Ebbe az állandó kapcsolatok is beszámítanak)

mysql.trace_mode boolean

  Nyomkövetõ mód. Amikor a mysql.trace_mode be van kapcsolva, a tábla/index pásztázás, felszabadítatlan eredményhalmazok, SQL hibák esetén keletkezõ figyelmeztetések kiíródnak. (A PHP 4.3.0-tól került bevezetésre)

mysql.default_port string

  Az alapértelmezett TCP port, amelyet a PHP akkor használ, ha nincs portszám megadva. Ha nincs más alapértelmezés megadva, akkor a MYSQL_TCP_PORT környezeti változóból, majd a `/etc/services` fájl mysql-tcp bejegyzésébõl, végül a fordításkor megadott `MYSQL_PORT` állandóból próbálja meg kideríteni a PHP. A windows alatt csak a `MYSQL_PORT` állandóval próbálkozik.

mysql.default_socket string

  Az alapértelmezett socketnév helyi adatbázishoz való csatlakozáskor, ha nincs más socketnév megadva.

mysql.default_host string

  Az alapértelmezett adatbáziskiszolgáló, ha másképp nincs meghatározva. Nem alkalmazható safe mode-ban.

mysql.default_user string

  Az alapértelmezett felhasználónév, ha más módon nincs meghatározva. Nem alkalmazható safe mode-ban.

mysql.default_password string

  Az alapértelmezett jelszó, ha más módon nincs meghatározva. Nem alkalmazható safe mode-ban.

mysql.connect_timeout integer

  Kapcsolat elévülési ideje másodpercben. Linux alatt ennyi idõt vár a PHP a szerver elsõ válaszára.

# Erőforrás típusok

Kétféle erőforrástípus van a MySQL modulban. Az első egy adatbáziskapcsolatot azonosít, a második pedig egy kérésre adott választ.

# Előre definiált állandók

Az itt listázott állandókat ez a kiterjesztés definiálja, és csak akkor elérhetőek, ha az adott kiterjesztés be van fordítva a PHP-be, vagy dinamikusan betöltött.

A PHP 4.3.0-es változata óta lehetőség van a mysql_connect() és a mysql_pconnect() függvények számára kliens jelzőket átadni. A következő konstansok léteznek:

Táblázat 2. MySQL kliens állandók

Állandó | Leírás
--- | ---
MYSQL_CLIENT_COMPRESS | Tömörített protokoll használata
MYSQL_CLIENT_IGNORE_SPACE | Függvénynevek után szóközök engedélyezése
MYSQL_CLIENT_INTERACTIVE | Interactive_timeout másodpercnyi (wait_timeout helyett) tétlenség engedélyezése a kapcsolat bezárása előtt.
MYSQL_CLIENT_SSL | SSL titkosítás használata. Ez a jelző a MySQL kliens könyvtár 4.x verziójától létezik. A 3.23.x verzió benne van mind a PHP 4, mind a PHP 5 Windows-os változatában.

A mysql_fetch_array() függvénynél az eredménytömb fajtáját konstans segítségével adhatod meg. Az alábbi állandókat használhatod:

Táblázat 3. MySQL fetch állandók

Állandó | Leírás
--- | ---
MYSQL_ASSOC | A tömb kulcsai az eredményben szereplő mezőnevek.
MYSQL_BOTH | Az eredményt mezőnevek valamint az eredmény oszlopszáma alapján érheted el.
MYSQL_NUM | Az eredmény oszlopai egy számmal indexelt tömb formájában állnak rendelkezésre. Az első oszlop indexe 0.

# Példák

Az alábbi példa bemutatja, hogyan kell csatlakozni, kéréseket végrehajtani, eredményt kinyomtatni és lecsatlakozni a MySQL szerverről.

Példa 1. MySQL modul áttekintő példa
`<?php // Csatlakozás, adatbázis kiválasztása $kapcsolat = mysql_connect('mysql_hoszt', 'mysql_azonosito', 'mysql_jelszo') or die('Nem tudok csatlakozni: ' . mysql_error()); echo 'A kapcsolódás sikerült'; mysql_select_db('az_en_adatbazisom') or die('Nem sikerült kiválasztanom az adatbázist'); // SQL kérés végrehajtása $keres = 'SELECT * FROM az_en_tablam'; $eredmeny = mysql_query($keres) or die('Hiba a kérésben: ' . mysql_error()); // Az eredmény kiírása HTML-ben echo "<table>\n"; while ($line = mysql_fetch_array($eredmeny, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($sor as $egy_oszlop) { echo "\t\t<td>$egy_oszlop</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // Eredményhalmaz felszabadítása mysql_free_result($result); // Kapcsolat lezárása mysql_close($kapcsolat); ?>`

Előző | Tartalom | Következő
muscat_setup | Fel | mysql_affected_rows