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

By using the --with-mysql[=DIR] configuration option you enable PHP to access MySQL databases. If you use this option without specifying the path to MySQL, PHP will use the built-in MySQL client libraries. With PHP 4 MySQL support is always enabled; if you don't specify the configure option, the bundled libraries are used. Users who run other applications that use MySQL (for example, running PHP 3 and PHP 4 as concurrent apache modules, or auth-mysql) should always specify the path to MySQL: --with-mysql=/path/to/mysql. This will force PHP to use the client libraries installed by MySQL, avoiding any conflicts.

Verze PHP pro Windows má vestavěnou podporu pro toto rozšíření. K použití těchto funkcí není třeba načítat žádná další rozšíření.

Varování

Crashes and startup problems of PHP may be encountered when loading this extension in conjunction with the recode extension. See the recode extension for more information.

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 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).

mysql.connect_timeout integer

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.

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) z 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_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 -- 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ů