Forum und email

Functii MySQL

Introducere

Aceste functii va ofera acces la serverul de baze de date MySQL. Mai mult informatii despre MySQL puteti gasi la » https://www.mysql.com/.

Documenatia MySQL poate fi gasita la » https://dev.mysql.com/doc/.

Necesităţi

Pentru a putea folosi aceste functii, trebuie sa compilati PHP cu suport MySQL.

Instalarea

Folosind optiunea de configurare --with-mysql[=DIR] aveti posibilitatea de a va conecta la baze de date MySQL folosind PHP.

In PHP 4, optiunea --with-mysql este implicita. Pentru a dezactiva aceasta setare implicita, puteti folosi optiunea --without-mysql. De asemenea in PHP 4, daca folositi MySQL fara a specifica calea catre directorul DIR in care este instalat MySQL, PHP va folosi librariile MySQL incluse in sursa PHP. In Windows, nu exista un DLL, ci este pur si simplu inclus in PHP 4. Utilizatorii care folosesc alte aplicatii care folosesc MySQL (drept examplu, auth-mysql) sunt sfatuiti sa nu foloseasca librariile incluse in sursa PHP, si sa specifice directorul in care a fost instalat MySQL: --with-mysql=/cale/catre/mysql. Aceasta setare va forta PHP sa soloseasca librariile furnizate de MySQL, evitand posibile conflicte.

In PHP 5, MySQL nu mai este implicit, nici nu este furnizata o librarie MySQL. Cititi FAQ pentru detalii.

Notă: Utilizatorii Windows vor trebui sa activeze php_mysql.dll in php.ini si fie sa creeze o copie a fisierului libmysql.dll in directorul Windows al sistemului, fie sa modifice PATH astfel incat sa cuprinda locatia fisierului libmysql.dll.
Acest lucru va rezolva eroarea "Unable to load dynamic library './php_mysql.dll'".

Pentru a compila PHP cu suport MySQL, folositi optiunea --with-mysql=[DIR] unde [DIR] indica locatia unde a fost instalat MySQL.

Aceasta extense nu suporta toate functionalitatile unor versiuni MySQL mai mari 4.1.0. Pentru toate functionalitatile va recomandam MySQLi.

Daca doriti sa instalati si extensia MySQL precum si extensia MySQLi in acelasi timp trebuie sa folositi aceasi librarile furnizata de MySQL pentru a evita conflictele.

Avertizare

Intreruperi neasteptate si probleme la pornirea PHP poti fi intalnite daca se foloseste aceasta extensie in acelasi timp cu extensia recode. Vedeti recode pentru mai multe informatii.

Notă: Daca aveti nevoie de un set de caractere altul decat latin (implicit), va trebui sa instalati libraria (care nu va este furnizata) libmysql compilata cu setul de caractere respectiv.

Configuraţia la rulare

Comportamentul acestor funcţii este afectat de parametrii stabiliţi în php.ini.

Optiuni de configurare MySQL
Nume Implicit Se poate modifica din
mysql.allow_persistent "On" PHP_INI_SYSTEM
mysql.max_persistent "-1" PHP_INI_SYSTEM
mysql.max_links "-1" PHP_INI_SYSTEM
mysql.trace_mode "Off" PHP_INI_ALL
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
Pentru alte detalii si definitii pentru constantele PHP_INI_* va recomandam ini_set().

Iată o explicaţie pe scurt a directivelor de configurare.

mysql.allow_persistent boolean

Daca sunt permise conexiuni persistente la MySQL.

mysql.max_persistent integer

Numarul maximum de conexiuni persistente la MySQL pentru fiecare proces.

Numarul maxim de conexiuni per proces, cu tot cu conexiuni persistente. Atentie! este vorba de numarul de conexiuni si nu de numarul de cereri catre server.

mysql.trace_mode boolean

Trace mode. Daca mysql.trace_mode este activat, avertismentele referitoare la scanari de tabele/indecsi, seturi de rezultate neeliberate, si erori SQL vor fi afisate conform cu setarile PHP. (Introdus de la PHP 4.3.0)

mysql.default_port string

Portul TCP folosit implicit pentru conectarea la MySQL daca nu este specificat alt port. Daca nici un port implicit nu este definit PHP va folosi variabila de sistem MYSQL_TCP_PORT, valoarea mysql-tcp din fisierul /etc/services sau constanta definita la compilare MYSQL_PORT, in aceasta ordine. Sistemele Windows vor folosi doar constanta MYSQL_PORT.

mysql.default_socket string

Numele socket folosita la conectare la un server local de baze de date daca nu se defineste un socket la conectare.

mysql.default_host string

Gazda implicita pentru conectarea la o baza de date daca nu se specifica alta. Aceasta valoare nu se aplica daca PHP ruleaza in modul securizat.

mysql.default_user string

Numele utilizatorului implicit pentru conectarea la o baza de date daca nu se specifica alta. Aceasta valoare nu se aplica daca PHP ruleaza in modul securizat.

mysql.default_password string

Parola implicita pentru conectarea la o baza de date daca nu se specifica alta. Aceasta valoare nu se aplica daca PHP ruleaza in modul securizat.

mysql.connect_timeout integer

Timpul cat PHP asteapta conectarea la MySQL. Pe Linux acest timp se aplica si la timpul de asteptare pentru primul raspuns din aprtea serverului.

Tipurile resurselor

Sunt doua tipuri de resurse folosite de modulu MySQL. Primul este identificatorul de legatura pentru conexiunea la baza de date, al doilea este resursa care "tine" rezultatul unei cereri sql.

Constante predefinite

Constantele de mai jos sunt definite de această extensie şi vor fi disponibile doar dacă această extensie a fost compilată în interiorul PHP, sau a fost încărcată dinamic în timpul rulării.

De la PHP 4.3.0 este posibil sa specificati modificatori (flags) optionali pentru functiile mysql_connect() si mysql_pconnect(). Urmatoarele constante sunt definite:

Constante MySQL
Constanta Descriere
MYSQL_CLIENT_COMPRESS Foloseste compresie
MYSQL_CLIENT_IGNORE_SPACE Permite folosirea spatiilor dupa numele functiilor (Atentie ! este vorba de functiile MySQL folosite in interiorul cererilor SQL nu de functii PHP.)
MYSQL_CLIENT_INTERACTIVE Permite interactive_timeout secunde (in loc de wait_timeout) fara activitate inainte de a inchide conexiunea.
MYSQL_CLIENT_SSL Foloseste criptare SSL. Acest modificator este valabil doar pentru versiuni ale librariilor MySQL mai mari sau egale cu 4.0. Versiunea 3.23.x este inclusa atat in PHP 4 cat si in versiunile binare petnru Windows ale PHP 5.

Functia mysql_fetch_array() foloseste constante pentru diferite tipuri de rezultate. Urmatoarele constante sunt definite:

Constante MySQL mysql_fetch_*
Constanta Descriere
MYSQL_ASSOC Coloanele sunt returnate in tablouri avand drept index numele coloanei din tabelul MySQL.
MYSQL_BOTH Coloanele sunt returnate in tablouri avand drept index numele coloanei MySQL precum si un index numeric. (Atentie ! acest modificator dubleaza marimea tabloului rezultat. Pentru a afla numarul de cloane intoarse impartiti la 2 rezultatul oferit de functia PHP count().)
MYSQL_NUM Coloanele sunt returnate in tablouri avand numai index numeric. Numerotarea incepe de la 0, unde 0 reprezinta prima coloana.

Exemple

Acest exemplu simplu va va arata cum sa va conectati, cum sa faceti o cerere sql, cum sa afisati rezultatul si in final sa va deconectati de la MySQL.

Example#1 Exemplu general - MySQL

<?php
// Conectarea la server
$link mysql_connect('mysql_host''mysql_user''mysql_password')
    or die(
'Nu ma pot conecta la server: ' mysql_error());
echo 
'Connected successfully';
// Selectarea unei baze da date
mysql_select_db('my_database') or die('Nu am putut schimba baza de date');

// Crearea unei cereri SQL si rularea ei
$query 'SELECT * FROM my_table';
$result mysql_query($query) or die('Cererea SQL a fost incorecta: ' mysql_error());

// Afisarea rezultatelor in format HTML
echo "<table>\n";
while (
$line mysql_fetch_array($resultMYSQL_ASSOC)) {
    echo 
"\t<tr>\n";
    foreach (
$line as $col_value) {
        echo 
"\t\t<td>$col_value</td>\n";
    }
    echo 
"\t</tr>\n";
}
echo 
"</table>\n";

// eliberarea rezultatului
mysql_free_result($result);

// Inchiderea conexiunii
mysql_close($link);
?>

Cuprins