LXIII. MySQL Funkce

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

Dokumentace k MySQL je dostupná na http://www.mysql.com/documentation/.

Požadavky

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

Instalace

Tyto funkce zprostředkovávají přístup na MySQL databázový server. Mají-li být tyto funkce dostupné, musí být PHP zkompilováno s podporou MySQL parametrem --with-mysql. Pokud použijete tento parametr bez zadané cesty k MySQL, PHP použije vestavěné MySQL klient knihovny. Uživatelé, kteří spouští další aplikace používající MySQL (např.: spuštěné PHP3 a PHP4 jako vzájemné moduly v apache či auth-mysql) by měli vždy zadat cestu k MySQL: --with-mysql=/cesta/k/mysql. PHP tak použije klientské knihovny instalované MySQL, čímž se vyvarujete možných konfliktům.

Runtime konfigurace

Chování funkcí MySQL je ovlivněno nastavením v globálním konfiguračním souboru 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
Podrobný popis a definice konstant PHP_INI_* naleznete v ini_set().

Zde je krátké vysvětlení konfiguračních příkazů.

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 uveeno jiné heslo. Nelze použít při bezpečném režimu (safe mode).

Typy zdrojů

V modulu MySQL jsou použity dva typy zdrojů. První zdroj je identifikátor databázového spojení a druhý, který vykonává výsledek dotazu.

Předdefinované konstanty

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

Tabulka 2. 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.
MYSQL_STORE_RESULT Určuje, zda by měl být výsledek MySQL bufferován.
MYSQL_USE_RESULT Určuje, zda by výsledek MySQL neměl být bufferován.

Examples

Zde je jednoduchý ukázkový příklad 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_login", "mysql_heslo")
    or die("Nelze se připojit");
print "Připojeno úspěšně!";
mysql_select_db("moje_databaze")
    or die("Nelze vybrat databázi");

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

// 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";

// Odpojení z MySQL 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 -- Returns the name of the character set
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 -- Provede 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 --  Zjistí typ 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 -- Vrátí id aktuálního vlákna
mysql_unbuffered_query --  Pošle SQL dotaz bez načtení a bufferování výsledných záznamů