Forum und email
MySQL funkce

XCVII. MySQL funkce

Úvod

Tyto funkce zprostředkovávají přístup na MySQL databázový server. Více informací o MySQL lze nalézt na https://www.mysql.com/.

Dokumentace k MySQL je dostupná na https://dev.mysql.com/doc/.

Požadavky

Aby byly tyto funkce dostupné, musí být PHP zkompilováno s podporou MySQL.

Instalace

Použitím konfigurační volby --with-mysql[=DIR] povolíte PHP přistupovat k MySQL databázím.

V PHP 4 je volba --with-mysql ve výchozím nastavení povolena. Pro zakázání MySQL můžete použít volbu --without-mysql. Pokud v PHP 4 povolíte MySQL bez zadání cesty k MySQL, PHP použije přibalené klientské knihovny MySQL. Pod Windows není potřeba žádné DLL, je přímo obsaženo v PHP 4. Uživatelé, kteří používají jiné aplikace, které používají MySQL (například auth-mysql) by neměli použít přibalené knihovny, ale měli by raději určit cestu k instalačnímu adresáři MySQL, např.: --with-mysql=/path/to/mysql. To přinutí PHP používat klientské knihovny instalované MySQL, čímž se vyhnete případným konfliktům.

V PHP 5 není ve výchozím nastavení MySQL nadále zapnuto ani nejsou k dispozici přibalené knihovny MySQL. Přečtěte si tuto FAQ s vysvětlením důvodů.

Toto MySQL rozšíření nebude pracovat s MySQL verzemi většími než 4.1.0. Pro tyto verze použijte MySQLi.

Varování

Padání a problémy při startu PHP mohou nastat, pokud nahráváte toto rozšíření spolu s rozšířením recode. Viz rozšíření recode pro bližší informace.

Poznámka: Pokud potřebujete kódové stránky jiné než latin (výchozí), musíte nainstalovat externí (ne přibalenou) knihovnu se zakompilovanou podporou kódových stránek.

Konfigurace běhu

Chování těchto funkcí je ovlivněno nastavením parametrů v php.ini.

Tabulka 1. Možnosti nastavení MySQL

JménoVýchozíZměnitelné
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
Podrobný popis a definice konstant PHP_INI_* naleznete v ini_set().

Zde je stručný popis konfiguračních direktiv.

mysql.allow_persistent boolean

Má-li být povoleno persistentní (trvalá) spojení s MySQL.

mysql.max_persistent integer

Maximální počet persistentních spojení na jeden proces.

mysql.max_links integer

Maximální počet spojení s MySQL na jeden proces včetně persistentních spojení.

mysql.default_port string

Číslo výchozího TCP portu pro spojení s databázovým serverem, pokud není port zadán. Není-li výchozí port zadán, použije se port uvedený v proměnné prostředí MYSQL_TCP_PORT, záznam mysql-tcp v /etc/services nebo "compile-time" konstanta MYSQL_PORT, v tomto pořadí. Win32 používá pouze konstantu MYSQL_PORT.

mysql.default_socket string

Výchozí jméno socketu pro připojení k lokálnímu databázovému serveru, není-li jiný socket specifikován.

mysql.default_host string

Výchozí server pro spojení s databázovým serverem, není-li uveden jiný. Nelze použít při bezpečném režimu (safe mode).

mysql.default_user string

Výchozí uživatel pro spojení s databázovým serverem, není-li uveden jiný uživatel. Nelze použít při bezpečném režimu (safe mode).

mysql.default_password string

Výchozí heslo pro spojení s databázovým serverem, není-li uvedeno jiné heslo. Nelze použít při bezpečném režimu (safe mode).

mysql.connect_timeout integer

Timeout připojení v sekundách. Na Linuxu je tento timeout použit také pro čekání na první odpověď serveru.

Typy prostředků

V MySQL modulu jsou použity dva typy zdrojů. První je identifikátor spojení pro připojení k databázi a druhý uchovává výsledek dotazu.

Předdefinované konstanty

Tyto konstanty jsou definovány tímto rozšířením a budou k dispozici pouze tehdy, bylo-li rozšíření zkompilováno společně s PHP nebo dynamicky zavedeno za běhu.

Od PHP 4.3.0 je možné nastavit klienta doplňujícími parametry pro funkce mysql_connect() a mysql_pconnect() Jsou definovány následující konstanty:

Tabulka 2. MySQL klientské konstanty

KonstantaPopis
MYSQL_CLIENT_COMPRESSPoužije kompresní protokol
MYSQL_CLIENT_IGNORE_SPACEPovolí mezeru za názvy funkcí
MYSQL_CLIENT_INTERACTIVEPovolí interactive_timeout sekundy (namísto wait_timeout) neaktivity před uzavřením spojení.

Funkce mysql_fetch_array() používá konstanty pro různé typy výsledkových polí. Jsou definovány následující konstanty:

Tabulka 3. MySQL fetch konstanty

KonstantaPopis
MYSQL_ASSOC Sloupce jsou vraceny do pole jehož klíčemi jsou názvy sloupců.
MYSQL_BOTH Sloupce jsou vráceny do pole majícího číslené i textové klíče, určující pořadí sloupce v tabulce, respektive jeho jméno.
MYSQL_NUM Vrací sloupec do pole s číselnými klíči reprezentujícími pořadí sloupce v tabulce. První sloupec tabulky začíná klíčem 0.

Příklady

Tento jednoduchý příklad ukazuje jak se připojit, provést dotaz, zobrazit výsledné řádky a odpojit se z MySQL databáze.

Příklad 1. Ukázkový příklad použití MySQL

<?php
    
/* Připojení, výběr databáze */
    
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
        or die(
"Nelze se připojit: " . mysql_error());
    print
"Připojeno úspěšně";
    
mysql_select_db("my_database") or die("Nelze vybrat databázi");

    
/* Příprava SQL dotazu */
    
$query = "SELECT * FROM my_table";
    
$result = mysql_query($query) or die("Dotaz nelze provést: " . mysql_error());

    
/* Zobrazení výsledku v 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";

    
/* Uvolnit výsledek */
    
mysql_free_result($result);

    
/* Odpojení od databáze */
    
mysql_close($link);
?>

Obsah
mysql_affected_rows -- Vrátí počet ovlivněných (změněných) záznamů v MySQL po posledním dotazu
mysql_change_user --  Změní přihlášeného uživatele v současném spojení
mysql_client_encoding -- Vrátí název znakové sady
mysql_close -- Ukončí (zavře) MySQL spojení
mysql_connect -- Vytvoří spojení s MySQL Serverem
mysql_create_db -- Vytvoří MySQL databázi
mysql_data_seek -- Přesune ukazatel na aktuální záznam
mysql_db_name -- Vrátí seznam všech databází
mysql_db_query -- Pošle MySQL dotaz
mysql_drop_db -- Vymaže (odstraní) MySQL databázi
mysql_errno --  Vrátí číslenou hodnotu chybové hlášky předchozího MySQL příkazu.
mysql_error --  Vrátí text chybové zprávy předchozího MySQL příkazu.
mysql_escape_string --  Upraví řetězec pro bezpečné použití v mysql_query.
mysql_fetch_array --  Načte výsledný řádek do asociativního, čísleného pole nebo obojího.
mysql_fetch_assoc --  Načte výsledný řádek do asociativního pole
mysql_fetch_field --  Načte informace o sloupci z výsledku do proměnné objektu
mysql_fetch_lengths --  Zjistí délku všech položek aktuálního výstupu
mysql_fetch_object --  Načte výsledný záznam do proměnné objektu
mysql_fetch_row -- Načte výsledný záznam do pole
mysql_field_flags --  Načte příznaky sloupce tabulky
mysql_field_len --  Vrací délku sloupce tabulky
mysql_field_name --  Načte název sloupce tabulky
mysql_field_seek --  Nastaví ukazatel na zadaný sloupec
mysql_field_table --  Zjistí jméno tabulky, v níž se nachází uvedený sloupec
mysql_field_type --  Vrací typ specifikovaného sloupce.
mysql_free_result -- Uvolní výsledek z paměti
mysql_get_client_info -- Načte verzi klientské knihovny MySQL
mysql_get_host_info -- Načte informaci o hostu
mysql_get_proto_info -- Načte informaci o protokolu MySQL
mysql_get_server_info -- Načte informace o serveru MySQL
mysql_info --  Vrací informace o posledním dotazu
mysql_insert_id --  Vrací generovanou hodnotu id posledního příkazu INSERT
mysql_list_dbs --  Načte všechny dostupné databáze na MySQL serveru
mysql_list_fields -- Načte výsledek s obsahem sloupce
mysql_list_processes -- List MySQL processes
mysql_list_tables -- Načte všechny tabulky v MySQL databázi
mysql_num_fields -- Vrací počet sloupců ve výsledku
mysql_num_rows -- Vrací počet záznamů ve výsledku
mysql_pconnect --  Otevře persistentní spojení s MySQL serverem
mysql_ping -- Ověří spojení se serverem, případně, není-li spojení dostupné, pokusí se připojit znovu.
mysql_query -- Pošle MySQL dotaz
mysql_real_escape_string --  Upraví řetězec pro bezpečné použití v mysql_query.
mysql_result -- Načte obsah jednoho sloupce tabulky
mysql_select_db -- Nastaví MySQL databázi
mysql_stat -- Vrací aktuální stav systému
mysql_tablename -- Načte jméno tabulky
mysql_thread_id -- Vrací id aktuálního vlákna
mysql_unbuffered_query --  Pošle SQL dotaz bez načtení a bufferování výsledných záznamů