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 » https://www.mysql.com/ címen találsz. A MySQL dokumentációját pedig a » https://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.
Habár ez a MySQL kiterjesztés kompatibilis a MySQL 4.1.0-val és az újabb verziókkal, nem támogatja az extra szolgáltatáskészletet, amit ezek a verziók nyújtanak. Ehhez használd a MySQLi kiterjesztést.
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. A fejrészeket (header) és könyvtárakat a » MySQL honlapjáról töltheted le.
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
Note: 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
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.
Note: 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.
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. |
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ó SQL safe mode-ban.
- mysql.default_user string
-
Az alapértelmezett felhasználónév, ha más módon nincs meghatározva. Nem alkalmazható SQL safe mode-ban.
- mysql.default_password string
-
Az alapértelmezett jelszó, ha más módon nincs meghatározva. Nem alkalmazható SQL 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:
Á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:
Á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. |
Megjegyzések
Note: A legtöbb MySQL függvény elfogad egy link_identifier paramétert az utolsó opcinális paraméterként. Ha ez nincs megadva, a legutóbb megnyitott kapcsolatot használja. Ha ez nem létezik, megpróbál a php.ini-ben megadott alapértelmezett paraméterekkel kapcsolódni. Ha ez sikertelen, a függvény FALSE-szal tér vissza.
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.
Example#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);
?>
Table of Contents
- mysql_affected_rows — Az előző MySQL műveletben érintett sorok számát adja meg
- mysql_change_user — Aktív kapcsolat felhasználójának módosítása
- mysql_client_encoding — A karaktertábla nevét adja
- mysql_close — Lezár egy MySQL kapcsolatot
- mysql_connect — Kapcsolatot nyit meg egy MySQL szerverhez
- mysql_create_db — Létrehoz egy MySQL adatbázist
- mysql_data_seek — Belső eredménymutató mozgatása
- mysql_db_name — Egy adatbázisnév lekérése
- mysql_db_query — MySQL kérést küld az adatbázisnak
- mysql_drop_db — Töröl egy MySQL adatbázist
- mysql_errno — Az előző MySQL művelet hibakódját tartalmazza
- mysql_error — Az előző MySQL művelet hibaszövegét adja
- mysql_escape_string — Egy karakerláncban szereplő speciális karakterek értelmezését szünteti meg
- mysql_fetch_array — Kérés egy sorát adja vissza (tetszőleges) tömb formájában
- mysql_fetch_assoc — Az eredmény egy sorát asszociatív tömbként adja vissza.
- mysql_fetch_field — Eredményhalmaz egy oszlopáról ad információt objektum formájában
- mysql_fetch_lengths — Az eredmény oszlopainak hosszáról nyújt információt
- mysql_fetch_object — Az eredmény következő sorát objektum formájában adja vissza
- mysql_fetch_row — Az eredmény következő sorát adja vissza számmal indexelt tömb formájában
- mysql_field_flags — Adott eredmény adott mezejének flagjeit adja vissza.
- mysql_field_len — A kérdezett mező hosszát adja vissza
- mysql_field_name — Adott mező nevét adja vissza
- mysql_field_seek — Az eredménymutatót a kívánt pozícióba mozgatja
- mysql_field_table — Visszaadja annak a táblának a nevét, melyben a megadott mező található
- mysql_field_type — Az eredmény adott mezejének típusát adja vissza
- mysql_free_result — Felszabadítja az eredmény által lefoglalt memóriát
- mysql_get_client_info — MySQL kliens információ
- mysql_get_host_info — MySQL kiszolgáló információ
- mysql_get_proto_info — MySQL protokoll információ
- mysql_get_server_info — MySQL szerver információ
- mysql_info — Információkat ad a legutóbb végrehajtott lekérdezésről
- mysql_insert_id — Visszaadja az előző INSERT művelet által előállított azonosítót
- mysql_list_dbs — Kilistázza a MySQL szerveren elérhető adatbázisokat
- mysql_list_fields — Kilistázza a MySQL tábla mezőit
- mysql_list_processes — Kilistázza a MySQL processzeket
- mysql_list_tables — Adott adatbázisbeli táblaneveket listázza
- mysql_num_fields — Az eredményben szereplő mezők számát adja
- mysql_num_rows — Az eredményben szereplő sorok számát adja vissza.
- mysql_pconnect — Perzisztens kapcsolatot nyit meg a MySQL szerverhez
- mysql_ping — Leellenőriz egy szerver-kapcsolatot és újra kapcsolódik ha nincs kapcsolat
- mysql_query — MySQL kérést küld a szervernek
- mysql_real_escape_string — Levédi egy stringben a speciális karaktereket egy SQL lekérdezés számára
- mysql_result — Eredmény egy sorának lekérdezése
- mysql_select_db — Kiválaszt egy MySQL adatbázist
- mysql_set_charset — Sets the client character set
- mysql_stat — Visszaadja az aktuális rendszer-állapotot
- mysql_tablename — Egy tábla nevével tér vissza
- mysql_thread_id — Az aktuális szál azonosítóját adja vissza
- mysql_unbuffered_query — SQL kérést küld a MySQL-nek anélkül, hogy az eredményt előre feldolgozná.