LXXIX. MySQL Functions

Úvod

Tieto funkcie umožňujú pristupovať k databázovým serverom MySQL. Bližši informácie o MySQL možno nájsť na http://www.mysql.com/.

Dokumentácia k MySQL sa nachádza na http://dev.mysql.com/doc/.

Požiadavky

Aby boli tieto funkcie k dispozícii, je potrebné skompilovať PHP s podporou MySQL.

Inštalácia

Použitím konfiguračnej možnosti --with-mysql[=DIR] povolíte prístup PHP k databázam MySQL. Ak použijete túto možnosť bez špecifikovania cesty k MySQL (parameter DIR) PHP použije vlastné interné klientské knižnice MySQL. Vo verziách PHP 4 je podpora MySQL vždy povolená. Ak nie je konfiguračná možnosť špecifikovaná, použijú sa knižnice dodávané s PHP. Užívatelia, ktorí používajú ďalšie aplikácie využívajúce MySQL (napr. prevádzkujú PHP 3 a PHP 4 ako konkurentné moduly servera Apache; alebo auth-mysql) by mali vždy uviesť cestu k MySQL: --with-mysql=/cesta/ku/mysql. Týmto nastavením bude PHP prinútené používať klientské knižnice nainštalované spolu s MySQL, čím sa predíde prípadným konfliktom.

Windows verzie PHP maj� vstavan� podporu pre toto roz��renie. Nemus�te na��ta� �iadne dodato�n� roz��renie, aby ste mohli tieto funkcie pou��va�.

Varovanie

Pri načítavaní tejto nadstavby súčasne s nadstavbou recode môžu nastať pády, či problémy pri spúšťaní PHP. Bližšie informácie možno nájsť v sekcii o nadstavbe. recode.

Runtime Konfigurácia

Spr�vanie tejto funkcie je ovplyvnen� nastaveniami v php.ini.

Tabuľka 1. Konfiguračné možnosti MySQL

NázovImplicitneMeniteľnosť
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
mysql.connect_timeout"0"PHP_INI_SYSTEM
Podrobnosti a definície konštánt typu PHP_INI_* možno nájsť pri funkcii ini_set().

Uvádzame krátke vysvetlenie konfiguračných direktív

mysql.allow_persistent boolean

Určuje, či budú povolené perzistentné pripojenia k MySQL.

mysql.max_persistent integer

Maximálny počet perzistentných pripojení k MySQL pre jeden proces.

mysql.max_links integer

Maximálny počet pripojení k MySQL, vrátanie perzistentných pripojení.

mysql.default_port string

Implicitný port TCP, ktorý sa bude používať na pripojenie k databázovému serveru, ak nie je v pripojení špecifikovaný port. V prípade, že nie je definovaná žiadna implicitná hodnota, port sa zistí z premennej prostredia MYSQL_TCP_PORT, ďalej z položky mysql-tcp v súbore /etc/services a nakoniec z hodnoty konštanty MYSQL_PORT zadanej pri kompilácii, a to v uvedenom poradí. Na platforme Win32 sa bude zisťovať len hodnota konštanty MYSQL_PORT.

mysql.default_socket string

Implicitný názov socketu, ktorý sa použije na pripojenie k lokálnemu databázovému serveru, ak nie je pri pripájaní špecifikovaný socket.

mysql.default_host string

Implicitný názov hostiteľského servera, ku ktorého databáze sa bude pripájať, ak nie je pri pripájaní špecifikovaný iný hostiteľ. Táto nastavenie nie je použiteľné v režime safe mode.

mysql.default_user string

Implicitné meno užívateľa, ktoré sa bude používať, v pripojení k databázovému serveru, ak nie je pri pripájaní špecifikované iné meno. Toto nastavenie nie je použiteľné v režime safe mode.

mysql.default_password string

Implicitné heslo, ktoré sa bude používať na pripojenie k databázovému serveru, ak nie je pri pripájaní špecifikované iné heslo. Toto nastavenie nie je použiteľné v režime safe mode.

mysql.connect_timeout integer

Časový limit odpojenia pri neaktivite v sekundách. V systéme Linux je tento časový limit použitý aj pri čakaní na prvú odpoveď servera.

Typy zdrojov

V moduli MySQL sú využívané dva typy zdrojov (resources). Prvým je identifikátor pripojenia k databáze a druhým je zdroj, ktorý uchováva výsledok dopytu.

Preddefinované Konštanty

Kon�tanty uveden� ni�ie s� definovan� t�mto roz��ren�m a bud� dostupn� iba ke� roz��renie bolo bu� kompilovan� do PHP alebo dynamicky na��tan� za behu (runtime).

Od verzie PHP 4.3.0 je možné špecifikovať dodatočné príznaky pre klienta pri používaní funkcií mysql_connect() a mysql_pconnect() Definované sú nasledovné konštanty:

Tabuľka 2. Konštanty klienta MySQL

konštantapopis
MYSQL_CLIENT_COMPRESSpoužívať komprimačný protokol
MYSQL_CLIENT_IGNORE_SPACEpovoľovať medzeru za názvami funkcií
MYSQL_CLIENT_INTERACTIVEPoužívať nastavenie interactive_timeout (namiesto wait_timeout) ako interval nečinnosti v sekundách. Po uplynutí tohto intervalu bude spojenie uzatvorené.

Funkcia mysql_fetch_array() využíva konštanty na špecifikovanie typu polí pre výsledky. Definované sú nasledovné konštanty.

Tabuľka 3. Konštanty MySQL fetch

konštantapopis
MYSQL_ASSOC Stĺpčeky sú vrátené v poli, pričom indexy tohto poľa tvoria názvy atribútov tabuľky.
MYSQL_BOTH Stĺpčeky sú vrátené v poli, pričom indexy tohto poľa tvoria jednak číselné indexy polí tabuliek a jednak názvy atribútov tabuľky.
MYSQL_NUM Stĺpčeky sú vrátené v poli, pričom indexy tohto poľa tvoria číselné indexy polí tabuliek. Tento index začína od 0 - tá reprezentuje hodnotu prvého atribútu tabuľky vo výsledku.

Príklady

Nasledovný jednoduchý príklad ukazuje, ako sa pripojiť k databáze, vykonať dopyt, vytlačiť jednotlivé riadky tvoriace výsledok tohto dopytu a ako sa odpojiť od databázy MySQL.

Príklad 1. Všeobecný príklad použitia nadstavby MySQL

<?php
    
/* Pripojíme sa a vyberieme databázu */
    
$link = mysql_connect("mysql_hostiteľ", "mysql_užívateľ", "mysql_heslo")
        or die(
"Nemožno sa pripojiť");
    print
"Pripojenie prebehlo úspešne";
    
mysql_select_db("my_database") or die("Nemožno vybrať databázu");

    
/* Vykonáme dopyt SQL */
    
$query = "SELECT * FROM my_table";
    
$result = mysql_query($query) or die("Dopyt zlyhal");

    
/* Výpis výsledkov do 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";

    
/* Uvoľníme premennú obsahujúcu výsledky */
    
mysql_free_result($result);

    
/* Ukončíme pripojenie */
    
mysql_close($link);
?>

Obsah
mysql_affected_rows -- Zistí počet riadkov, ktoré boli ovplyvnené predchádzajúcou operáciou.
mysql_change_user --  Change logged in user of the active connection
mysql_client_encoding -- Vráti názov použitej znakovej sady
mysql_close -- Ukončí pripojenie k serveru MySQL
mysql_connect -- Ustanoví pripojenie k serveru MySQL
mysql_create_db -- Create a MySQL database
mysql_data_seek -- Move internal result pointer
mysql_db_name -- Get result data
mysql_db_query -- Send a MySQL query
mysql_drop_db -- Drop (delete) a MySQL database
mysql_errno --  Returns the numerical value of the error message from previous MySQL operation
mysql_error --  Returns the text of the error message from previous MySQL operation
mysql_escape_string --  Escapes a string for use in a mysql_query
mysql_fetch_array --  Fetch a result row as an associative array, a numeric array, or both
mysql_fetch_assoc --  Fetch a result row as an associative array
mysql_fetch_field --  Get column information from a result and return as an object
mysql_fetch_lengths --  Get the length of each output in a result
mysql_fetch_object -- Fetch a result row as an object
mysql_fetch_row -- Get a result row as an enumerated array
mysql_field_flags --  Get the flags associated with the specified field in a result
mysql_field_len --  Returns the length of the specified field
mysql_field_name --  Get the name of the specified field in a result
mysql_field_seek --  Set result pointer to a specified field offset
mysql_field_table --  Get name of the table the specified field is in
mysql_field_type --  Get the type of the specified field in a result
mysql_free_result -- Free result memory
mysql_get_client_info -- Get MySQL client info
mysql_get_host_info -- Get MySQL host info
mysql_get_proto_info -- Get MySQL protocol info
mysql_get_server_info -- Get MySQL server info
mysql_info --  Get information about the most recent query
mysql_insert_id --  Get the ID generated from the previous INSERT operation
mysql_list_dbs --  List databases available on a MySQL server
mysql_list_fields -- List MySQL table fields
mysql_list_processes -- List MySQL processes
mysql_list_tables -- List tables in a MySQL database
mysql_num_fields -- Get number of fields in result
mysql_num_rows -- Get number of rows in result
mysql_pconnect --  Open a persistent connection to a MySQL server
mysql_ping -- Ping a server connection or reconnect if there is no connection
mysql_query -- Send a MySQL query
mysql_real_escape_string --  Escapes special characters in a string for use in a SQL statement
mysql_result -- Get result data
mysql_select_db -- Select a MySQL database
mysql_stat -- Get current system status
mysql_tablename -- Get table name of field
mysql_thread_id -- Return the current thread ID
mysql_unbuffered_query --  Send an SQL query to MySQL, without fetching and buffering the result rows