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.
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.
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 |
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.
- mysql.max_links integer
-
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:
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:
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($result, MYSQL_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
- mysql_affected_rows — Numarul de randuri afectate de ultima operatie MySQL
- mysql_change_user — Schimba utilizatorul pentru conexiunea curenta
- mysql_client_encoding — Intoarce numele setului de caractere curent
- mysql_close — Inchide conexiunea la MySQL
- mysql_connect — Creeaza o conexiune la MySQL
- mysql_create_db — Creaza o noua baza de date MySQL
- mysql_data_seek — Move internal result pointer
- mysql_db_name — Get result data
- mysql_db_query — Send a MySQL query
- mysql_drop_db — Drop (delete) a MySQL database
- mysql_errno — Returns the numerical value of the error message from previous MySQL operation
- mysql_error — Returns the text of the error message from previous MySQL operation
- mysql_escape_string — Escapes a string for use in a mysql_query
- mysql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
- mysql_fetch_assoc — Fetch a result row as an associative array
- mysql_fetch_field — Get column information from a result and return as an object
- mysql_fetch_lengths — Get the length of each output in a result
- mysql_fetch_object — Fetch a result row as an object
- mysql_fetch_row — Get a result row as an enumerated array
- mysql_field_flags — Get the flags associated with the specified field in a result
- mysql_field_len — Returns the length of the specified field
- mysql_field_name — Get the name of the specified field in a result
- mysql_field_seek — Muta pointerul rezultatului la un camp specificat
- mysql_field_table — Get name of the table the specified field is in
- mysql_field_type — Get the type of the specified field in a result
- mysql_free_result — Free result memory
- mysql_get_client_info — Aflare informatii client MySQL
- mysql_get_host_info — Get MySQL host info
- mysql_get_proto_info — Get MySQL protocol info
- mysql_get_server_info — Get MySQL server info
- mysql_info — Get information about the most recent query
- mysql_insert_id — Get the ID generated from the previous INSERT operation
- mysql_list_dbs — List databases available on a MySQL server
- mysql_list_fields — List MySQL table fields
- mysql_list_processes — List MySQL processes
- mysql_list_tables — List tables in a MySQL database
- mysql_num_fields — Get number of fields in result
- mysql_num_rows — Get number of rows in result
- mysql_pconnect — Open a persistent connection to a MySQL server
- mysql_ping — Ping a server connection or reconnect if there is no connection
- mysql_query — Send a MySQL query
- mysql_real_escape_string — Escapes special characters in a string for use in a SQL statement
- mysql_result — Get result data
- mysql_select_db — Select a MySQL database
- mysql_set_charset — Sets the client character set
- mysql_stat — Get current system status
- mysql_tablename — Get table name of field
- mysql_thread_id — Return the current thread ID
- mysql_unbuffered_query — Send an SQL query to MySQL, without fetching and buffering the result rows