Koja je svrha funkcije niza mysql dohvaćanja. Primjer sintakse i aplikacije

Koja je svrha funkcije niza mysql dohvaćanja.  Primjer sintakse i aplikacije
Koja je svrha funkcije niza mysql dohvaćanja. Primjer sintakse i aplikacije

MySQL niz dohvaćanja obrađuje rezultate preuzimanja iz baze podataka i kao rezultat vraća regularni niz, asocijativni niz ili oba niza. U stvari, MySQL dohvaćanje je prevod informacija dobijenih iz upita baze podataka u oblik pogodan za obradu.

Za jednostavne upite, sintaksa koristi jedan red uzorka koji se pretvara u niz; za strimovanje upita, ovo je alat za sekvencijalnu obradu toka informacija.

Primjer sintakse i aplikacije

PHP MySQL unos niza dohvaćanja prima rezultat upita i format željenog rezultata se može specificirati:

  • MYSQL_ASSOC;
  • MYSQL_NUM;
  • MYSQL_BOTH.

U prvom slučaju će se formirati asocijativni niz, u drugom niz sa numeričkim indeksima, au posljednjem će biti dostupan niz sa indeksima oba tipa.

Kao rezultat izvršenja $aFetch = mysqli_fetch_array($cResult) niz će biti kreiran $aFetch.

U ovom primjeru, MySQL niz za dohvaćanje obrađuje originalne podatke (1). U tabeli postoje samo četiri zapisa, za svaki se izvode različite opcije preuzimanja. Rezultat obrade uzorka (2) se spaja u linije podataka (3): $cFetch, $cFetch1, $cFetch2, $cFetch3.

Rezultati pokazuju da se bez specificiranja konstanti MYSQL_ASSOC, MYSQL_NUM i MYSQL_BOTH dobija isti rezultat kao u slučaju MYSQL_BOTH. Ove konstante se smatraju zastarjelim i njihova upotreba je zastarjela.

Korištenje MySQL niza dohvaćanja

Korišćenje rezultata upita u formatu niza je veoma zgodno u PHP programima. MySQL funkcionalnost pristupa bazi podataka pruža sigurne i pouzdane metode pristupa.

MySQL niz dohvaćanja generiše grešku nivoa upozorenja samo u situaciji kada $cResult nedostaje ili je nevažeći, pa stoga veza sa bazom podataka nije uspela. Ime $cResult može biti bilo koje, ovdje se koristi u kontekstu primjera. Na zahtjev (2):

  • $cResult = mysqli_query($this->iConnectId, $cQuery);

varijabla $this->iConnectId je aktivna veza baze podataka, formatirana kao višenamjenski objekt.

Alat MySQL niza za dohvaćanje je jednostavan i efikasan, ali ipak zgodan za korištenje na objektno orijentisan način.

Objekt pristupa bazi podataka

MySQL je izuzetno jednostavan i efikasan alat za organizovanje informacija. Tokom čitavog perioda njihovog korišćenja, MySQL baze podataka su se pokazale kao pouzdano i efikasno sredstvo za skladištenje i pristup podacima.

Mehanizam za pisanje upita baze podataka i njihovo korištenje je jednostavan, ali u praksi je idealno formatirati ga u formatu objekta cijele baze podataka, zasebne tabele ili određene strukture podataka.

Dizajn dohvaćanja MySQL-a u stvarnoj praksi je prilično glomazan, posebno kada je potrebno dohvatiti informacije iz jedne tabele osnovnih informacija, na primer, iz tabele osoblja, a zatim izabrati podatke o zaposlenima iz drugih tabela:

  • radna istorija;
  • biografske informacije;
  • proizvodna dostignuća;
  • oblast stručne kompetencije;
  • ostali podaci.

Ovi podaci se po pravilu neće popunjavati za sve zaposlene, a osim toga, ako unesete određene podatke u tabelu osoblja za svaku liniju, to će učiniti glomaznim i nezgodnim za korištenje.

Nivo do baze podataka

Opseg primjene MySQL dohvaćanja je transformacija podataka u niz. Ovo se može učiniti na razini metode objekta baze podataka. U ovom slučaju, programer kreira alat visokog nivoa za sebe koji omogućava pristup bilo kojoj tabeli baze podataka na isti način.

Poziva se metoda koja odmah generiše traženi niz podataka, a operacije formiranja zahtjeva, njegovog izvršavanja i obrade rezultata padaju u tijelo ove metode.

Ovo je vrlo zgodno i nema potrebe za pisanjem glomaznih konstrukcija, stvarajući presedan za moguću grešku. Posebno važno: ovaj pristup pojednostavljuje moguće modifikacije strukture baze podataka, jer one ne idu dalje od objekta pristupa bazi podataka. Ako je potrebno, morat ćete samo ponoviti objekt pristupa bazi podataka, a ne cijelu funkcionalnost stranice.

Još je zgodnije izgraditi objekte prave namjene na vrhu objekta pristupa bazi podataka. Na primjer, opis osoblja koji ima sljedeća svojstva: lista, prikaz podataka o zaposleniku, promjena kartice zaposlenika itd. Alati za pristup podacima skriveni su u dubinama metoda stvarnih objekata, što pojednostavljuje rad programera i poboljšava kvalitetu rezultata.

$query = "IZABIR kolo1, kolo2, kolo3 IZ tabele GDJE id > 100" $result = _query($query);

za ovu akciju:

Dok ($red = mysql_fetch_array($result))( .... )

da li ovo radi 1 petlju (ponoviti x puta)?

a za ovo:

$red = mysql_fetch_array($result) foreach($red kao $r)( ... )

da li ovo čini 2 petlje (ponoviti x puta)?

gdje je x broj rezultata

EDIT:

ok hvala momci, ok, u osnovi sam sročio ovo pitanje jako, jako loše.

retrospektivno, trebalo je da bude

"mysql_fetch_array() vraća samo jedan red svaki put kada se pozove"

Sada sam sretan što je moje razumijevanje mysql_fetch_array() bilo v. Nevjeran!

Hvala na izdvojenom vremenu!

Pretpostavljam da mysql_fetch_array() perfrom petlju, pa sam zainteresovan da koristim while() u kombinaciji sa njim ako čuva ugniježđenu petlju.

br. mysql_fetch_array jednostavno vraća sljedeći red rezultata i pomiče naprijed interni pokazivač. On se ne spušta. (Interno, može ili ne mora negdje koristiti neku vrstu petlje, ali to nije važno.)

Dok ($row = mysql_fetch_array($result)) ( ... )

Ovo čini sljedeće:

  1. red je dodijeljen $red
  2. izraz se procjenjuje, a ako ima vrijednost true , sadržaj petlje se izvršava
  3. postupak počinje ponovo
$red = mysql_fetch_array($result); foreach($red kao $r) ( ... )

Ovo čini sljedeće:

  1. mysql_fetch_array dohvati i vrati sljedeći red
  2. red je dodijeljen $red
  3. foreach prelazi preko sadržaja niza i izvršava sadržaj petlje onoliko puta koliko ima elemenata u nizu

U oba slučaja mysql_fetch_array radi istu stvar. Napišeš toliko ciklusa. Međutim, oba dizajna ne rade istu stvar. Drugi će djelovati samo na jedan red rezultata, dok će prvi iterirati sve redove.

S obzirom da je vraćen samo jedan red, u oba slučaja će se izvršiti samo jedna petlja. Iako će provjeriti da petlja ulazi u uvjet dva puta za svaku.

Za prvo: vaš program će se ponoviti jednom za svaki red u skupu rezultata koji je vratio upit. Možete unaprijed znati koliko rezultata ima koristeći mysql_num_rows() .

Za drugi: ovaj put samo koristite jedan red skup rezultata i uradite nešto za svaki od njih kolone. Ovo je ono što čini foreach konstrukcija jezika: ona prolazi kroz tijelo petlje za svaki unos u nizu $row. Broj puta koji će program proći kroz petlju je unaprijed poznat: proći će jednom za svaki stupac u skupu rezultata (što vjerojatno znate, ali ako ga trebate definirati, možete koristiti count($row) ) .

$query = "IZABIR col1,col2,col3 IZ tabele WHERE id > 100" $result = mysql_query($query); if(mysql_num_rows($result)>0) ( while($row = mysql_fetch_array()) //ovdje možete koristiti mnoge funkcije kao što su mysql_fetch_assoc() i druge ( //Vraća 1 red vašoj varijabli koja postaje niz i automatski idite na sljedeći niz rezultata Echo $row["col1"]."|".Echo $row["col2"]."|".Echo $row["col2"]; ) )

Da, mysql_fetch_array() vraća samo jedan rezultat. Ako želite da dobijete više od jednog reda, morate staviti poziv funkcije u while petlju.

dva primjera:

Ovo će vratiti samo prvi red

$red = mysql_fetch_array($result);

Ovo će vratiti po jedan red svake petlje sve dok više nema redaka u skupu rezultata

While($row = mysql_fetch_array($result)) ( //Radite stvari sa sadržajem $rowa)

Prva linija:

$result = mysql_query($query);

vrati php db resurs.

Drugi red

Dok ($red = mysql_fetch_array($result))

Petlja kroz sve zapise koje je vratio upit.

Umjesto toga koristite mysql_fetch_assoc
U ovom slučaju, red ima parove ključ => vrijednosti.
Dok samo stavite ovo:
print_r($row) i razumjet ćete
Ako koristite mysql_fetch_assoc format stringa će biti:

$row["column1_name"] = column1_value; $row["column2_name"] = column2_value;

Za ovo:

$row = mysql_fetch_assoc($result) foreach ($red kao $columnName => $columnValue) ( ​​... )

Dobit ćete prvi red iz upita i ponovit ćete sve stupce u prvom rezultatu upita.

Dohvaćanje određenog polja rezultata.

sintaksa:

Int mysql_result(int rezultat, int red [, mješovito polje])

Funkcija vraća vrijednost polja polje u liniji rezultata sa brojem red. Parametar polje može navesti ne samo ime polja, već i njegov broj - poziciju na kojoj je kolona "stajala" kada je tabela kreirana, kao i puno ime polja obrasca: "ime_tablice.ime_polja". Međutim, preporučuje se korištenje imena polja kad god je to moguće.

Funkcija je univerzalna: uz njenu pomoć možete "zaobići" cijeli rezultat u jednoj ćeliji. I iako to nije zabranjeno, ipak se ne preporučuje, jer mysql_result() radi dosta sporo.

mysql_fetch_array

Izvlači sljedeći zapis iz rezultata i postavlja ga u asocijativni niz.

sintaksa:

Niz mysql_fetch_array(int rezultat [, int rezultat_tip])

Funkcija mysql_fetch_array() vraća sljedeći red rezultata u obliku asocijativnog niza, gdje je svako polje pridruženo elementu s ključem koji odgovara imenu polja. Dodatno, elementi sa numeričkim ključevima i vrijednostima koje odgovaraju vrijednostima polja sa ovim indeksima se upisuju u niz. U vraćenom nizu oni se postavljaju odmah iza elemenata sa "običnim" ključevima.

Parametar tip_ rezultata specificira tip vraćenog niza i može uzeti jednu od sljedećih vrijednosti: MYSQL_NUM, MYSQL_ASSOC, MYSQL_BOTH(podrazumevano).

Može se postaviti pitanje zašto su numerički indeksi uopće potrebni? Odgovor je jednostavan: činjenica je da kao rezultat selekcije zapravo mogu postojati polja (u stvari, kolone) s istim imenima, ali, shodno tome, s različitim indeksima. Ovo se dešava kada je uzorak unutra SELECT proizvedeno istovremeno sa nekoliko stolova.

Mysql_connect($host, $user, $pass); $result=mysql_db_query("baza podataka", "odaberite id, ime iz tabl"); while($row=mysql_fetch_array($result)) ( echo "id: ".$row["id"]."
"; echo "id: ".$row."
"; echo "name: ".$row["name"]."
"; echo "name: ".$row."
"; ); mysql_free_result($result);

mysql_fetch_row

Upisuje unos u numerisani niz.

sintaksa:

Niz mysql_fetch_row(int rezultat)

Funkcija vraća niz-listu sa vrijednostima polja sljedeće linije rezultata rezultat. Ako je pokazivač na trenutnu poziciju rezultata postavljen iza posljednjeg zapisa (tj. nema više redaka), vraća se false. Trenutna pozicija se prebacuje na sljedeći unos, dakle sljedeći poziv mysql_fetch_row()će vratiti sljedeći redak rezultata.

Svako polje zapisa je pohranjeno u elementu niza brojeva. Numeracija počinje od 0.

$r=mysql_query("odaberite * iz OutTable gdje je starost

Kao što vidite, petlja će se završiti čim ponestane linija, tj. Kada mysql_fetch_row()će vratiti false.

mysql_fetch_object

Dobijanje unosa u svojstva objekta.

sintaksa:

Objekt mysql_fetch_object(int rezultat)

Funkcija vraća objekat čija svojstva sadrže polja trenutnog zapisa. Ako više nema zapisa, vraća false.

Mysql_connect($host, $user, $pass); $result=mysql_db_query("baza podataka", "odaberi * iz tabele"); while($rows=mysql_fetch_object($result)) ( echo $rows->id; echo $rows->name; );

mysql_fetch_lengths

Vraća dužinu elementa unosa.

sintaksa:

Niz mysql_fetch_lengths(int rezultat)

Funkcija mysql_fetch_lengths() vraća dužinu vrijednosti dobivene korištenjem funkcija mysql_fetch_row(), mysql_fetch_array() ili mysql_fetch_object().

Na primjer, u sljedećem primjeru:

$arr=mysql_fetch_row($result); $len=mysql_fetch_lengths($rezultat);

niz $lenće sadržavati dužinu odgovarajućih elemenata niza $arr, tj. $len=strlen(arr) itd.

mysql_fetch_field

Vraća informacije o svojstvima objekta i polju zapisa.

sintaksa:

Objekt mysql_fetch_field(int rezultat [, int field_offset])

U opcionom parametru field_offset naveden je broj polja čija svojstva želimo da dobijemo. Ako ovaj parametar nije specificiran, svaki put kada se funkcija pozove mysql_fetch_field() se vraćaju svojstva sljedećeg polja iz skupa zapisa rezultat.

Vraćeni objekat ima sljedeća svojstva:

  • ime- naziv polja
  • sto- naziv tabele kojoj polje pripada
  • max_length- maksimalna dužina polja
  • not_null- 1 ako je polje dozvoljeno da bude prazno
  • primarni_ključ- 1 ako je polje ključno
  • jedinstveni_ključ- 1 ako su u polju dozvoljene samo jedinstvene vrijednosti
  • multiple_key- 1, ako polje dozvoljava duple vrijednosti
  • numeric- 1 ako je polje numeričko
  • mrlja- 1 ako je polje tipa BLOB
  • tip- vrsta polja
  • nepotpisan- 1 ako je polje brojčano bez predznaka
  • zerofill- 1, ako je polje popunjeno nulama
mysql_connect($host,$user,$pass); $result=mysql_db_query("baza podataka", odaberite * iz tabele"); for($i=0;$i "; $param=mysql_fetch_field($result); if(!$param) echo "Nema informacija o svojstvu!" ; echo " name: $param->name tabela: $param->table max_length: $param->max_length not_null: $param->not_null primarni_key: $param->primary_key jedinstveni_key: $param->unique_key multiple_key: $param- > multiple_key numerički: $param->numeric blob: $param->blob tip: $param->type unsigned: $param->unsigned zerofill: $param->zerofill "; )

mysql_field_seek

Pomiče kursor na navedeno polje.

sintaksa:

Int mysql_field_seek(int rezultat, int field_offset)

Ova funkcija je suvišna. Sljedeći isječci bi bili ekvivalentni:

$param=mysql_fetch_field($result, field_offset);

Mysql_field_seek($result, field_offset); $param=mysql_fetch_field($result);

mysql_field_name

Vraća ime polja.

sintaksa:

String mysql_field_name(int rezultat, int filed_index)

Funkcija mysql_field_name() vraća naziv polja koje se nalazi u rezultatu rezultat sa indeksom filed_index(numeracija počinje od 0).

$result=mysql_query("SELECT id, ime iz tabele"); echo mysql_field_name($result,1); // Ispisuje: ime

mysql_field_table

Vraća ime tabele iz koje je polje preuzeto.

sintaksa:

String mysql_field_table(int rezultat, int field_offset)

Vraća ime tabele iz koje je preuzeto polje sa pomakom field_offset kao rezultat rezultat.

mysql_field_len

Vraća dužinu polja.

sintaksa:

Int mysql_field_len(int rezultat, int filed_offset)

Funkcija vraća dužinu rezultirajućeg polja rezultat. Polje se, kao i obično, specificira navođenjem njegovog pomaka. Dužina ovdje ne znači veličinu podataka polja u bajtovima, već veličinu koja je navedena kada je kreirana. Na primjer, ako je polje tipa varchar i kreirano je (zajedno sa tablicom) sa tipom varchar(100), tada će za to biti vraćeno 100.

mysql_field_type

Vraća tip rezultujućeg skupa zapisa.

sintaksa:

String mysql_field_type (int rezultat, int filed_offset)

Ova funkcija je slična mysql_filed_name(), samo što vraća ne ime, već tip odgovarajuće kolone u rezultatu. Oni mogu biti npr. int, duplo, pravi itd.

Mysql_connect($host,$user,$pass); mysql_select_db("mydb"); $result=mysql_query("SELECT * FROM tabl"); $fields=mysql_num_fields($result); $rows=mysql_num_rows($result); $i=0; $table=mysql_field_table($rezultat,$i); echo "Tabela "$table" ima $fields polja i $rows zapise
"; echo "Struktura tabele:
"; while($i"; $i++; )

mysql_field_flags

Ova funkcija vraća zastavice koje su korištene za kreiranje navedenog polja u tablici.

sintaksa:

string mysql_field_flags(int rezultat, int field_offset)

Vraćeni niz je niz riječi odvojenih razmacima, tako da ga možete pretvoriti u niz pomoću funkcije eksplodirati():

$Flags=explode(" ",mysql_field_flags($r,$field_offset));

Zabilježite polja u MySQL može imati sljedeća svojstva zastavice:

  • "not_nul"
  • "primary_key"
  • "unique_key"
  • "multiple_key"
  • "blob"
  • "nepotpisano"
  • "zerofill"
  • "binarni"
  • "enum"
  • "auto_increment"
  • "vremenska oznaka"

mysql_list_fields

Vraća listu polja tabele.

sintaksa:

Int mysql_list_fields(string dbname, string tblname [,int link_identifier])

Funkcija mysql_list_fields() vraća informacije o navedenoj tabeli tblname u bazi podataka bdname koristeći ID veze link_identifier ako je dano (inače posljednja otvorena veza). Povratna vrijednost je identifikator rezultata, koji se može raščlaniti na uobičajen način. U slučaju da se vrati greška -1, tekst poruke o grešci se može dobiti na uobičajen način.

$link=mysql_connect($host,$user,$pass); $fields=mysql_list_fields("db1", "tabela", $link); $colums=mysql_num_fields($fields); // broj polja u tabeli // Zatim ispiši imena svih polja u tabeli za($i=0;$i"; )

mysql_num_fields

Ova funkcija vraća broj polja u jednom redu rezultata, tj. broj kolona u rezultatu.

sintaksa:

Int mysql_num_fields(int rezultat)

Zbog gore navedenog, funkcija vam omogućava da odredite horizontalnu dimenziju „dvodimenzionalnog niza rezultata“.

mysql_errno

Vraća broj posljednje greške.

sintaksa:

int mysql_errno()

Ova funkcija vraća broj posljednje zabilježene greške ili 0 ako nema grešaka.

Identifikator link_identifier ne može se navesti ako je tokom izvršavanja skripte uspostavljena samo jedna veza.

Mysql_connect("dbname"); echo mysql_errno().": ".mysql_error()."
";

mysql_error

Vraća poruku o grešci.

sintaksa:

String mysql_error()

Ova funkcija vraća string koji sadrži tekst poruke o grešci ili prazan string ako nije bilo grešaka.

Mysql_connect("dbname"); echo mysql_errno().": ".mysql_error()."
";