Forum und email

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 » https://www.mysql.com/.

Dokumentácia k MySQL sa nachádza na » https://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ť.

Warning

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.

Konfiguračné možnosti MySQL
Názov Implicitne Meniteľnosť
mysql.allow_persistent "On" PHP_INI_SYSTEM
mysql.max_persistent "-1" PHP_INI_SYSTEM
mysql.max_links "-1" PHP_INI_SYSTEM
mysql.default_port NULL PHP_INI_ALL
mysql.default_socket NULL PHP_INI_ALL
mysql.default_host NULL PHP_INI_ALL
mysql.default_user NULL PHP_INI_ALL
mysql.default_password NULL PHP_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.

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:

Konštanty klienta MySQL
konštanta popis
MYSQL_CLIENT_COMPRESS používať komprimačný protokol
MYSQL_CLIENT_IGNORE_SPACE povoľovať medzeru za názvami funkcií
MYSQL_CLIENT_INTERACTIVE Použí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.

Konštanty MySQL fetch
konštanta popis
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.

Example#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($resultMYSQL_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);
?>

Table of Contents