Numarul coloanelor din setul de rezultate
Numele fiecarei coloane
Lungimea fiecarei coloane
Indicatorii MySQL asociati coloanei
Tipul MySQL al fiecarei coloane
Numele tabelului MySQL care contine coloana
1. Obtinerea numarului coloanelor dintr-un tabel MySQL
Pentru a obtine numarul coloanelor dintr-un set de rezultate, utilizati functia
mysql_num_fields()
Aceasta foloseste ca argument valoarea returnata de functia mysql_query().
Iata un exemplu in care functia mysql_num_fields() determina numarul coloanelor dintr-o interogare care selecteaza toate coloanele folosind specificatorul SQL pentru toate câmpurile "*", astfel puteti afla numarul de coloane dintr-un tabel:
Iata un exemplu in care functia mysql_num_fields() determina numarul coloanelor dintr-o interogare care selecteaza toate coloanele folosind specificatorul SQL pentru toate câmpurile "*", astfel puteti afla numarul de coloane dintr-un tabel:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nr_campuri = mysql_num_fields($rezultat);
echo "<br /> Numar campuri: $nr_campuri";
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nr_campuri = mysql_num_fields($rezultat);
echo "<br /> Numar campuri: $nr_campuri";
mysql_close();
?>
2. Obtinerea numelui unei coloane
Pentru a obtine numele unei coloane dintr-un tabel MySQL, folositi functia
mysql_field_name()
Aceasta returneaza numele coloanei din setul de rezultate. Functia preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Iata un exemplu care determina numele primei coloane dintr-un tabel MySQL:
Iata un exemplu care determina numele primei coloane dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nume = mysql_field_name($rezultat, 0);
echo "<br /> Coloana 1 : $nume";
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nume = mysql_field_name($rezultat, 0);
echo "<br /> Coloana 1 : $nume";
mysql_close();
?>
3. Obtinerea lungimii unei coloane
Pentru a obtine lungimea unei coloane dintr-un tabel MySQL, folositi functia
mysql_field_len()
Aceasta returneaza lungimea maxima a coloanei din setul de rezultate. Functia preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Iata un exemplu care determina lungimea maxima a coloanei doi dintr-un tabel MySQL:
Iata un exemplu care determina lungimea maxima a coloanei doi dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$lungime = mysql_field_len($rezultat, 1);
echo "<br /> Lungime Coloana 2 - $lungime";
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$lungime = mysql_field_len($rezultat, 1);
echo "<br /> Lungime Coloana 2 - $lungime";
mysql_close();
?>
4. Obtinerea indicatorilor MySQL asociati unei coloane
Pentru a obtine indicatorii SQL asociati unei coloane dintr-un tabel MySQL, folositi functia
mysql_field_flags()
Aceasta preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Functia mysql_field_flags() raporteaza urmatorii indicatori:
Functia mysql_field_flags() raporteaza urmatorii indicatori:
AUTO_INCREMENT
BINARY
BLOB
ENUM
MULTIPLE_KEY
NOT_NULL
PRIMARY_KEY
TIMESTAMP
UNIQUE_KEY
UNSIGNED
ZEROFILL
- Daca la o coloana sunt asociati mai multi indicatori, fiecare indicator este separat de vecinii sai prin intermediul unui singur spatiu.
Iata un exemplu care determina indicatorii asociati primei coloane dintr-un tabel MySQL:
Iata un exemplu care determina indicatorii asociati primei coloane dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$indicatori = mysql_field_flags($rezultat, 0);
echo "<br /> Indicatorii Coloanei 1 : $indicatori";
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$indicatori = mysql_field_flags($rezultat, 0);
echo "<br /> Indicatorii Coloanei 1 : $indicatori";
mysql_close();
?>
5. Obtinerea tipului MySQL al unei coloane
Pentru a obtine tipul MySQL al unei coloane dintr-un tabel MySQL, folositi functia
mysql_field_type()
Aceasta preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Principalele tipuri MySQL returnate de functia mysql_field_type() sunt prezentate in Lectia 22 , in tabelul "Principalele tipuri de date din MySQL".
Iata un exemplu care determina tipul primei coloane dintr-un tabel MySQL:
Principalele tipuri MySQL returnate de functia mysql_field_type() sunt prezentate in Lectia 22 , in tabelul "Principalele tipuri de date din MySQL".
Iata un exemplu care determina tipul primei coloane dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$tip = mysql_field_type($rezultat, 0);
echo "<br /> Tip Coloana 1 : $tip";
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$tip = mysql_field_type($rezultat, 0);
echo "<br /> Tip Coloana 1 : $tip";
mysql_close();
?>
6. Determinarea tabelului MySQL asociat unei coloane
Pentru a determina tabelul MySQL (daca exista) asociat unei anumite coloane, folositi functia
mysql_field_table()
Aceasta preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
În cazul în care coloana contine o valoare calculata sau daca respectiva coloana nu este asociata în alt mod cu un tabel MySQL, functia returneaza un sir vid.
Iata un exemplu care determina tabelul asociat primei coloane din setul de rezutate:
În cazul în care coloana contine o valoare calculata sau daca respectiva coloana nu este asociata în alt mod cu un tabel MySQL, functia returneaza un sir vid.
Iata un exemplu care determina tabelul asociat primei coloane din setul de rezutate:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$tabel = mysql_field_table($rezultat, 0);
echo "<br /> Nume tabel : $tabel";
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$tabel = mysql_field_table($rezultat, 0);
echo "<br /> Nume tabel : $tabel";
mysql_close();
?>
7. Obtinerea structurii complete a setului de rezultate
Daca doriti obtinerea mai multor caracteristici ale setului de rezultate, o functie utila poate fi:
mysql_fetch_field()
Aceasta functie returneaza un obiect ale carui proprietati contin o varietate de informatii cu privire la coloana unui tabel MySQL. Proprietatile sunt urmatoarele:
blob - are valoarea 1 în cazul în care coloana este de tip BLOB
max_length - lungimea maxima a coloanei;
multiple_key - are valoarea 1 în cazul în care coloana este o cheie non-unica
name - numele coloanei
not_null - are valoarea 1 în cazul în care coloana nu poate contine valoarea NULL
numeric - are valoarea 1 în cazul în care coloana este numerica
primary_key - are valoarea 1 în cazul în care coloana este o cheie primara
table - numele tabelului MySQL caruia îi apartine coloana
type - tipul MySQL al coloanei
unique_key - are valoarea 1 în cazul în care coloana este o cheie unica
unsigned - are valoarea 1 în cazul în care coloana este de tip UNSIGNED
zerofill - are valoarea 1 în cazul în care coloana este completata cu zerouri
functia mysql_fetch_field() preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat primei coloane este 0, indexul asociat celei de-a doua coloane este l etc.
Iata un exemplu care prezinta modul de obtinere si descriere a structurii complete a setului de rezultate pentru prima coloana dintr-un tabel MySQL:
Iata un exemplu care prezinta modul de obtinere si descriere a structurii complete a setului de rezultate pentru prima coloana dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$info = mysql_fetch_field($rezultat, 0);
echo "<br /> Coloana 1: ";
echo "<PRE>
blob: $info->blob
max_length: $info->max_length
multiple_key: $info->multiple_key
name: $info->name
not_null: $info->not_null
numeric: $info->numeric
primary_key: $info->primary_key
table: $info->table
type: $info->type
unique_key: $info->unique_key
unsigned: $info->unsigned
zerofill: $info->zerofill
</PRE>";
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$info = mysql_fetch_field($rezultat, 0);
echo "<br /> Coloana 1: ";
echo "<PRE>
blob: $info->blob
max_length: $info->max_length
multiple_key: $info->multiple_key
name: $info->name
not_null: $info->not_null
numeric: $info->numeric
primary_key: $info->primary_key
table: $info->table
type: $info->type
unique_key: $info->unique_key
unsigned: $info->unsigned
zerofill: $info->zerofill
</PRE>";
mysql_close();
?>
Pentru a obtine aceste proprietati pentru toate coloanele din tabel, folositi o instructiune "for", dupa exemplul de mai jos, care parcurge fiecare coloana, folosind ca limita a numarului de coloane valoarea returnata de functia mysql_num_fields()
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nr_campuri = mysql_num_fields($rezultat);
for ($i=0; $i<$nr_campuri; $i++) {
echo "<br /> Coloana $i: ";
$info = mysql_fetch_field($rezultat);
if ($info) {
echo "<PRE>
blob: $info->blob
max_length: $info->max_length
multiple_key: $info->multiple_key
name: $info->name
not_null: $info->not_null
numeric: $info->numeric
primary_key: $info->primary_key
table: $info->table
type: $info->type
unique_key: $info->unique_key
unsigned: $info->unsigned
zerofill: $info->zerofill
</PRE>";
}
else {
echo "Necunoscut";
}
}
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nr_campuri = mysql_num_fields($rezultat);
for ($i=0; $i<$nr_campuri; $i++) {
echo "<br /> Coloana $i: ";
$info = mysql_fetch_field($rezultat);
if ($info) {
echo "<PRE>
blob: $info->blob
max_length: $info->max_length
multiple_key: $info->multiple_key
name: $info->name
not_null: $info->not_null
numeric: $info->numeric
primary_key: $info->primary_key
table: $info->table
type: $info->type
unique_key: $info->unique_key
unsigned: $info->unsigned
zerofill: $info->zerofill
</PRE>";
}
else {
echo "Necunoscut";
}
}
mysql_close();
?>
8. Accesul non-secvential la coloanele unui set de rezultate
Functiile mysql_fetch_row() si mysql_fetch_array() returneaza, în general, rândurile dintr-un set de rezultate în mod secvential, incepand de la primul rand al tabelului. Totusi, functia mysql_data_seek() permite obtinerea accesului la rândurile unui set de rezultate într-o maniera non-secventiala, . Functia are forma:
mysql_data_seek(rezultat, numar_rand)
Unde "rezultat" este valoarea returnata de functia mysql_query(), iar "numar_rand" este indexul rândului la care doriti sa obtineti accesul. Primul rând al tabelului este numerotat cu 0, al doilea cu 1 etc.
Functia returneaza TRUE daca executia reuseste, respectiv FALSE în caz contrar.
Apoi, o invocare ulterioara a functiei mysql_fetch_row() sau a functiei mysql_fetch_array() va returna rândul din pozitia specificata in functia mysql_data_seek().
Studiati urmatorul exemplu, care obtine accesul la al treilea rând al setului de rezultate returnat de o interogare anterioara:
Functia returneaza TRUE daca executia reuseste, respectiv FALSE în caz contrar.
Apoi, o invocare ulterioara a functiei mysql_fetch_row() sau a functiei mysql_fetch_array() va returna rândul din pozitia specificata in functia mysql_data_seek().
Studiati urmatorul exemplu, care obtine accesul la al treilea rând al setului de rezultate returnat de o interogare anterioara:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
if (!mysql_data_seek($rezultat, 2)) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
else {
$rand = mysql_fetch_array($rezultat, MYSQL_ASSOC);
foreach ($rand as $coloana) {
echo "| $coloana |";
}
}
mysql_close();
?>
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
if (!mysql_data_seek($rezultat, 2)) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
else {
$rand = mysql_fetch_array($rezultat, MYSQL_ASSOC);
foreach ($rand as $coloana) {
echo "| $coloana |";
}
}
mysql_close();
?>
- Acest exemplu afiseaza datele din randul trei pentru fiecare coloana a tabelului MySQL.