Računala Windows Internet

Slanje upita bazi podataka u PHP -u. Svemoćna funkcija upita - konačni vodič za upite u mysqlu iz php mysqli upita

Mislim da su svi čuli za Paretovo pravilo. U bilo kojem području, 20% napora daje 80% rezultata. Na primjer, 20% garderobe nosite 80% vremena, 20% vaših klijenata ostvaruje 80% vašeg prihoda. Slično, u Google tablicama, poznavajući 20% postojećih funkcija, možete riješiti 80% svih mogućih problema.

Smatram da je Query jedna od najkorisnijih značajki Google tablica. No, u Googleovoj pomoći opisano je vrlo površno, a puna snaga ove funkcije nije otkrivena. Pomnijim pregledom postaje jasno da je sposobna zamijeniti većinu postojećih funkcija.

Za rad s QUERY trebat će vam osnovno znanje o SQL -u. Za one koji nisu upoznati, nemojte se plašiti, funkcija QUERY zapravo podržava najosnovnije SQL značajke.

Sintaksa upita

QUERY (podaci; upit; [zaglavlja])
  • podaci- ovo je niz ćelija koje će poslužiti kao baza podataka za SQL upit;
  • upit- tekst SQL upita;
  • naslovi Je izborni argument u kojem možete odrediti koliko prvih redaka niza sadrži zaglavlja.

Za maksimalnu percepciju daljnjih informacija, predlažem da otvorite i kopirate sljedeću Google proračunsku tablicu.

U doxu postoji nekoliko listova koje ste upravo kopirali. List DB je baza podataka kojoj ćemo pristupiti pomoću funkcije QUERY. Listovi Level sadrže primjere koje ćemo pogledati u ovom članku. Primjer će se komplicirati sa svakom novom razinom.

SQL plan upita u funkciji upita

Svaki SQL upit sastoji se od zasebnih blokova koji se često nazivaju kleveta. Funkcija SQL za upit koristi sintaksu jezika upita Google API -ja za vizualizaciju koja podržava sljedeće listiće:

  • Odaberi- nabrajanje polja koja će se vratiti zahtjevom;
  • gdje- sadrži popis uvjeta prema kojima će se filtrirati niz podataka obrađen zahtjevom;
  • grupiraj po- sadrži popis polja po kojima želite grupirati rezultat;
  • stožer- Pomaže u izgradnji unakrsnih tablica koristeći vrijednost jednog stupca kao imena stupaca konačne tablice;
  • naručiti prema- odgovoran je za razvrstavanje rezultata;
  • ograničiti- pomoću ovog dijela upita možete postaviti ograničenje broja redaka koje upit vraća;
  • pomak- uz pomoć ove klevete možete postaviti broj prvih redaka koje upit ne bi trebao obraditi;
  • označiti- ova kleveta je odgovorna za naziv polja koja je vratio upit;
  • format- odgovoran je za format izlaznih podataka;
  • opcije - omogućuje postavljanje dodatnih parametara za izlaz podataka.

Hello World for Query (Odaberi) funkciju

Idemo na razinu Level_1 i pogledajmo formulu u ćeliji A1.

Upit (DB! A1: L1143; "odaberi * ograničenje 100")

Dio formule " DB! A1: L1143 " odgovoran za bazu podataka iz koje ćemo izvršiti odabir. Drugi dio " odaberite * ograničenje 100"Sadrži sam tekst zahtjeva. "*" U ovom slučaju znači vraćanje svih polja sadržanih u bazi podataka. Pomoću " granica 100»Ograničavamo izlaz na najviše 100 redaka. Ovo je primjer najjednostavnijeg upita. Odabrali smo prvih 100 redaka iz baze podataka. Ovo je svojevrsni "Hello world" za funkciju Query.

Korištenje filtara i sortiranje (Gdje, Naruči prema)

Idite na stranicu Level_2. Odaberimo samo neka od polja koja su nam potrebna i postavimo uvjete filtriranja i razvrstavanja. Na primjer, podatke koristimo samo za kampanje Campaign_1 i Campaign_2 za razdoblje od 22. do 25. listopada 2015. Sortirajmo ih silaznim redoslijedom prema zbroju sesija. Za filtriranje i razvrstavanje, tekstu zahtjeva morate dodati opis klevete Gdje i Narudžba... Za izlaz gore opisanog primjera u tablicu rezultata potrebna su nam polja Kampanja, Datum i Sesije. Oni su ti koji se trebaju navesti u kleveti. Odaberi.

Upućivanje na polja baze podataka vrši se kroz nazive stupaca radnog lista na kojem se baza podataka nalazi.

U našem slučaju, podaci koji se nalaze na listu DB i odnose se na određena polja zapisuju se kao naziv stupaca lista. Stoga se obavezna polja nalaze u sljedećim stupcima:

  • polje Datum- stupac A;
  • polje Kampanja- stupac B;
  • polje Sesije- stupac G.

U skladu s tim, dio upita koji je odgovoran za popis ispisanih podataka izgledat će ovako:

Odaberite A, B, G

Sljedeća u zahtjevu je kleveta Gdje... Prilikom pisanja zahtjeva kleveta se mora postaviti po redoslijedu opisanom u prvom odjeljku ovog članka. Nakon objave Gdje moramo navesti uvjete filtriranja. U ovom slučaju filtriramo podatke prema nazivu kampanje (Kampanja) i datumu (Datum). Koristimo nekoliko uvjeta filtriranja. U tekstu upita između svih uvjeta mora postojati logički operator ILI ili AND. Filtriranje po datumima malo se razlikuje od filtriranja prema numeričkim i tekstualnim vrijednostima; da biste ga primijenili, morate koristiti operator Datum. Dio zahtjeva koji je odgovoran za filtriranje podataka izgledat će ovako:

GDJE (A> = datum "2015-10-22" I A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")

Filtriranje podataka pomoću zagrada podijelili smo u dva logička dijela: prvi filtrira prema datumima, drugi - prema nazivu kampanje. U ovoj fazi formula koja opisuje podatke za odabir i uvjete za filtriranje podataka izgleda ovako:

Upit (DB! A1: L1143; "Odaberite A, B, G GDJE (A> = datum" 2015-10-22 "I A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")")

Možete ga kopirati i zalijepiti, na primjer, na novi list dokumenta, koji se koristi kao primjer u ovom postu, i dobit ćete sljedeći rezultat:

Osim uobičajenih logičkih operatora (=,<, >) klauzula WHERE podržava dodatne operatore filtriranja:

  • sadrži- provjerava sadržaj određenih znakova u nizu. Na primjer, GDJE A sadrži ‘John’ vratit će u filter sve vrijednosti iz stupca A koje sadrže Johna, na primjer, John Adams, Long John Silver;
  • počinje sa- filtrira vrijednosti prema prefiksu, odnosno provjerava znakove na početku retka. Na primjer, počinje s 'en' vratit će inženjering i engleski;
  • završava sa- filtrira vrijednosti na kraju retka. Na primjer, linija 'Kauboj ’Bit će vraćeno sa„ završava s ‘dječak’ ”ili„ završava s ‘y’ ”;
  • šibice- odgovara regularnom izrazu. Na primjer: gdje se podudaraju ‘. * Ia ’Vratit će vrijednosti Indije i Nigerije.
  • Kao - pojednostavljena verzija regularnih izraza provjerava podudara li se niz s datim izrazom pomoću zamjenskih znakova. Trenutno like podržava dva zamjenska znaka: "%" znači bilo koji broj bilo kojeg znaka u nizu, a "_" znači bilo koji jedan znak. Na primjer, "gdje će naziv poput" fre% "" odgovarati redovima ‘Fre ’, »Fred ’, And’ freddy ’.

Zahtjev je već filtrirao podatke za određeno razdoblje i ostavio samo kampanje koje su nam potrebne. Ostaje samo sortirati rezultat opadajućim redoslijedom ovisno o broju sesija. Sortiranje u tim upitima provodi se tradicionalno za SQL pomoću klevete Naručite do... Sintaksa je vrlo jednostavna: trebate samo navesti polja po kojima želite sortirati rezultat, a također odrediti i redoslijed sortiranja. Zadana vrijednost je asc order, odnosno uzlazno. Ako navedete desc parametar iza naziva polja, upit će vratiti rezultat u opadajućem redoslijedu navedenom u kosi crti Naručite do polja.

U našem slučaju, redak u tekstu zahtjeva bit će odgovoran za filtriranje:

Naručite prema G desc

U skladu s tim, konačni rezultat formule na listu Level_2, koja rješava problem koji nam je potreban, izgleda ovako:

Upit (DB! A1: L1143; "SELECT A, B, G WHERE (A> = date" 2015-10-22 "AND A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2") ORDER BY G DESC")

Sada možete filtrirati i sortirati podatke pomoću najjednostavnije SQL sintakse i funkcije QUERY.

".
Možda dečki iz moskovskog ureda nemaju vremena, pa će biti besplatnog prijevoda Query Language Reference (Verzija 0.7).
Google Visualization API. Jezik upita (verzija 0.7)
Jezik upita Google Visualization API -ja omogućuje vam manipuliranje podacima postavljanjem upita izvoru podataka.

Obično za vizualizaciju morate dati podatke u određenom obliku. Na primjer, tortni grafikon zahtijeva dva stupca: tekstualnu oznaku i brojčanu vrijednost. Izvor podataka, međutim, možda ne odgovara ovoj strukturi. Može sadržavati više stupaca ili će njihov redoslijed biti drugačiji od onoga što je potrebno za dijagram.
Jezik upita omogućuje nam strukturiranje podataka na način koji nam je potreban za postizanje rezultata.
Sintaksa jezika upita slična je SQL -u. Oni koji znaju koristiti SQL moći će brzo savladati jezik upita. Odjeljak sintakse identificira razlike u tim jezicima.
Imajte na umu da za iscrtavanje nije uvijek potrebno koristiti jezik upita. Za njegovu upotrebu potrebna je baza. Na sadržaj.

Korištenje jezika upita

Niz upita možete dodati izvoru podataka na dva načina: iz JavaScript koda ili kao parametar do veze do izvora podataka. Ako vaša veza ne sadrži parametre upita, tada se prema zadanim postavkama vraća cijeli skup podataka. Ovaj skup možete promijeniti prilagođavanjem upita samom izvoru podataka.

Ako koristite funkciju UPIT u Google tablicama, možete preskočiti sljedeće korake i prijeći na sljedeći dio.

Postavljanje zahtjeva iz JavaScripta

Da biste postavili niz upita iz JavaScript koda, morate pozvati metodu setQuery google.visualization.Query class.
var upit = novi google.visualization.Query (DATA_SOURCE_URL);
query.setQuery ("odabir odjeljenja, zbroj (plaća) grupe po odjeljcima");
query.send (handleQueryResponse);

Niz upita izvoru podataka može se dodati pomoću parametra tq... Stoga je moguće koristiti vizualizacije koje su napisali drugi programeri, jednostavno prilagođavanjem njihovog skupa podataka.
Niz upita mora biti ispravno kodiran URL-om. Možete koristiti JavaScript funkciju encodeURICcomponent za kodiranje ili to učinite ručno putem alata na kraju odjeljka.
Primjer
Razmotrite primjer upita za Google tablice (Ne zaboravite da su identifikatori stupaca uvijek slova. Nazivi stupaca nisu identifikatori prilikom objavljivanja. Identifikatori stupaca moraju se koristiti u upitu)
Nakon kodiranja zahtjev će izgledati ovako:
odaberite% 20A% 2C% 20suma (B)% 20grupa% 20po% 20A
Pretpostavimo da je adresa tablice podataka sljedeća:
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE
Dodajte parametar zahtjeva & tq = VAŠ_UPER_STRING na vezu do Tablice i nabavite spremni niz upita
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE&tq=select%A%2C%20sum(B)%20group%20by%20A

Jezična sintaksa

Pregled

Moj jezik upita vrlo je sličan SQL -u. Međutim, postoje neke specifičnosti koje je potrebno uzeti u obzir.
Tablica podataka
Ovaj dokument sadrži izraz "Tablica podataka" koji se odnosi na rezultate upita. Tablica se sastoji od redaka i stupaca. Svaki stupac ima sljedeća svojstva:
  • ID (ili ID stupca)... Koristi se za upućivanje na stupce tablice. Imajte na umu da se stupac morate odnositi samo po identifikatoru. Trik: pokušajte ne koristiti razmake u identifikatorima, to može uzrokovati poteškoće u uređivanju zahtjeva. Osim toga, svi identifikatori s razmacima moraju biti zatvoreni u leđa.
  • Označiti... Ovo je niz koji se obično prikazuje krajnjim korisnicima. Na primjer, legenda u tortnom grafikonu ili naslov tabličnog grafikona. Nije primjenjivo za funkciju QUERY () u Google tablicama.
  • Vrste podataka... Podržane su sljedeće vrste podataka: niz, broj, boolean, datum (datum), datum i vrijeme (datum -vrijeme), vrijeme (vrijeme dana). Sve vrijednosti u stupcu bit će tipa podataka tog stupca ili nule. Ti su tipovi podataka vrlo slični JavaScript tipovima, nisu identični. Oni su opisani u odjeljku Doslovci.
  • Predlošci oblikovanja... Tablice podataka mogu podržati obrasce oblikovanja za sve ili neke stupce. Oni su opisani u odjeljku Oblikovanje.
Tablica podataka koja se koristi u svim primjerima
U ovom dokumentu primjeri koriste tablicu sa sljedećim vrstama podataka i stupaca:
Ime
niz
dubina
niz
vrijeme za ručak
vrijeme dana

Plaća
broj

Datum zaposlenja
datum
dob
broj
isSenior
boolean
seniorityStartTime
Datum vrijeme
Ivan Inž 12:00:00 2005-03-19 35 pravi 2007-12-02 15:56:00
Dave Inž 12:00:00 2006-04-19 27 lažno null
Sally Inž 13:00:00 2005-10-10 30 lažno null
Ben Prodajni 12:00:00 2002-10-10 32 pravi 2005-03-09 12:30:00
Dana Prodajni 12:00:00 2004-09-08 25 lažno null
Mikrofon Marketing 13:00:00 2005-01-10 24 pravi 2007-12-30 14:40:00

Jezični operatori

Jezik upita sastoji se od sljedećih operatora, koji se sastoje od jedne ili dvije riječi. Operateri se moraju međusobno slijediti redoslijedom prikazanim u tablici:
Operater Upotreba
Odaberi Odabire koje će se stupce i kojim redoslijedom vratiti. Ako je operator izostavljen, tada će se vratiti svi stupci tablice.
Vraća samo one retke tablice koji odgovaraju uvjetu. Ako je operator izostavljen, tada će se vratiti svi retci u tablici.
grupiraj po Grupira vrijednosti prema retku.
stožer Pretvara jedinstvene vrijednosti u stupcima u nove stupce, slično zaokretnoj tablici.
naručiti prema Sortira nizove na temelju vrijednosti.
ograničiti Postavlja ograničenje redaka koji će se vratiti.
pomak Preskače navedeni broj redaka iz ispisa.
označiti Postavlja oznake stupaca.
format Formatira vrijednosti u navedenim stupcima prema obrascima oblikovanja.
mogućnosti Postavlja dodatne parametre.
iz Operator from se ne koristi.
Odaberi
Naredba select navodi koje stupce treba vratiti i kojim redoslijedom. Ako nije naveden operator ili je naveden odabir *, svi stupci tablice bit će vraćeni svojim izvornim redoslijedom. Stupci se mogu referencirati putem identifikatora, ali ne i putem oznaka. Identifikatori u Google tablicama nazivi su stupaca s jednim ili dva slova (A, B, C, ..., AC, ..., DC, ...).
Parametri operatora mogu biti identifikatori stupaca, zbirne funkcije, skalarne funkcije ili aritmetički operatori.
Primjeri:
Odaberi *
odaberite odjel, plaća
odaberite max (plaća)
email adresadatum):

Dobivamo rezultat:
vrijeme za ručak Ime
12:00:00 Ivan
12:00:00 Dave
13:00:00 Sally
12:00:00 Ben
12:00:00 Dana
13:00:00 Mikrofon
Odredba where koristi se za vraćanje samo onih redaka koji odgovaraju uvjetima.
Za opis uvjeta koriste se jednostavni operatori usporedbe<=, <, >, >=, =, !=, <>... Oba operatora! =,<>znači nejednak... Žice se uspoređuju po leksikografskom značenju. Napomena, jednakost se provjerava putem operatora =, a ne putem == kao u mnogim jezicima... Usporedba s null vrši se kroz null i nije null. Kada koristite QUERY () u Google tablicama, uobičajeno je da polje niza bude prazno "", a ne null.
Možete kombinirati više uvjeta pomoću logičkih operatora i, ili, ne. Zagrade se koriste za definiranje eksplicitnog prvenstva.

Klauzula where također koristi dodatne operatore za složenije usporedbe nizova. Ovi operatori uzimaju dva argumenta, koji moraju biti nizovi, svaki argument bez niza (datum, broj) bit će pretvoren u niz prije usporedbe. Usporedba razlikuje mala i velika slova (za ublažavanje ove značajke upotrijebite skalarne funkcije upper (), lower ()).
contains - podudara se sa podnizom. Izraz će vratiti true ako se dio niza u potpunosti podudara s datim argumentom - podnizom. Na primjer, tamo gdje ime sadrži "John" vratit će se "John", "John Adams", "Long John Silver" ali ne "John Adams".

Primjeri:
Odaberi *
odaberite odjel, plaća
odaberite max (plaća)
Sljedeći primjer prikazuje upotrebu upućivanja identifikatora s razmacima ( email adresa) i identifikatore koji odgovaraju nazivima rezerviranih riječi ( datum):
odaberite `adresu e -pošte`, ime,` datum`
Primijenimo sljedeći upit na tablicu iz primjera:
Dobivamo rezultat:
vrijeme za ručak Ime
12:00:00 Ivan
12:00:00 Dave
13:00:00 Sally
12:00:00 Ben
12:00:00 Dana
13:00:00 Mikrofon
resurs mysql_query(niz upit [, identifikator_referencije resursa])

mysql_query ()šalje zahtjev aktivnoj bazi podataka poslužitelja na koji se odnosi proslijeđeni pokazivač. Ako je link_identifier izostavljen, koristi se posljednja otvorena veza. Ako nema otvorenih veza, funkcija se pokušava povezati s DBMS -om, slično kao funkcija mysql_connect () nema parametara. Rezultat upita je međuspremnik.

Komentar: Niz upita NE smije završavati točkom -zarezom.

Samo za upite SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query () vraća pokazivač na rezultat upita, ili LAŽNO ako zahtjev nije ispunjen.
U drugim slučajevima (INSERT, UPDATE, DELETE, DROP itd.), mysql_query () vraća PRAVI u slučaju uspješnog zahtjeva i LAŽNO u slučaju greške. Vrijednost nije jednaka LAŽNO označava da je zahtjev uspješno dovršen. Ne govori o broju zahvaćenih ili vraćenih redova. Sasvim je moguće da uspješan zahtjev neće utjecati na bilo koji redak.

Sljedeći upit je netočan i mysql_query ()će se vratiti LAŽNO :

mysql_query () također se smatra pogrešnim i vratit će se LAŽNO ako nemate dovoljno prava za rad s tablicom navedenom u upitu.

Kada radite s rezultatima upita, možete koristiti funkciju mysql_num_rows () da biste pronašli broj redaka vraćenih upitom SELECT, ili mysql_affected_rows () da biste pronašli broj redaka obrađenih upitima DELETE, INSERT, REPLACE ili UPDATE.

Samo za upite SELECT, SHOW, DESCRIBE, EXPLAIN, function mysql_query () vraća pokazivač na rezultat koji se može koristiti u funkciji mysql_fetch_array () i druge funkcije koje rade s rezultatima upita. Kad završite s radom s rezultatom, pomoću funkcije možete osloboditi resurse koji se koriste za njegovo spremanje

Bilješka: Nadgradnja Power Upit ponuđen u Excelu 2016 kao grupa naredbi Preuzmite i pretvorite... Podaci u ovom članku odnose se i na Power Query i na novu grupu. Više informacija potražite u članku Preuzimanje i pretvaranje u programu Excel 2016.

U Power Queryu operacija Dodati stvara novi upit koji sadrži sve retke iz prvog upita, a zatim sve retke iz drugog upita.

Sigurnosna napomena: Razine privatnosti spriječiti slučajno prikupljanje podataka iz više izvora koji mogu biti privatni ili organizacijski. Uz neke upite, korisnik može nenamjerno poslati podatke iz privatnog izvora podataka u drugi izvor. Napadači mogu iskoristiti ovu priliku. Power Query analizira svaki izvor podataka i određuje razinu privatnosti za njega: javnu, organizacijsku i privatnu. Više informacija o razinama privatnosti potražite u odjeljku Razine privatnosti.

Dodavanje u tijeku

Možete izvesti dvije vrste operacije dodavanja: srednji dodatak ili inline dodaj... Korištenje srednji dodatak za svaku operaciju dodavanja stvara se novi upit. Na inline dodaj dodajete podatke postojećem upitu dok ne dođete do konačnog rezultata. Rezultat je novi korak na kraju trenutnog upita.

Ugrađeni dodatak

Srednji dodatak


Vidi također:

Bilješka: Uređivač upita prikazuje se samo pri učitavanju, uređivanju ili stvaranju novog zahtjeva pomoću Power Upit... Video prikazuje prozor urednik upita koja se pojavljuje nakon što promijenite upit u radnoj knjizi programa Excel. Pogledati urednik upita bez preuzimanja ili izmjene postojećeg upita u radnoj knjizi, u odjeljku Dobivanje vanjskih podataka na kartici vrpce Power Upit izabrati Iz drugih izvora> Prazan upit... Video prikazuje jednu od metoda prikaza urednik upita.

Naučili smo kako se povezati s MySQL poslužiteljem, izabrati bazu podataka s kojom ćemo raditi, naučili PHP funkciju slanja upita na MySQL poslužitelj, naučili dva jednostavna upita (stvaranje i brisanje tablice) i naučili kako prekinuti vezu.

Sada ćemo dublje istražiti MySQL upite. Pa krenimo!

Izrada tablice - CREATE TABLE

Sada imamo praznu bazu podataka, u njoj nema tablica. Pa prvo napravimo tablicu. To već znamo iz prvog dijela.

Evo skriptnog koda koji će stvoriti ploču koja nam je potrebna:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "CREATE TABLE users (login VARCHAR (20), password VARCHAR (20))" "; if (mysqli_query ($ link, $ query)) echo "Tablica je stvorena."; else echo "Tablica nije stvorena:" .mysqli_error (); mysqli_close ($ veza);

U našoj tablici postoje samo dva polja: prijava i lozinka. Zasad nam to više ne treba, nemojmo komplicirati proces.

Dakle, tablica je stvorena.

Dodavanje redaka (zapisa) u tablicu - INSERT

Tablici možete dodati novi redak pomoću naredbe insert SQL. Evo primjera:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "INSERT INTO users (login, password) VALUE (" zeus "," pass123 ")"; if (mysqli_query ($ link, $ query)) echo "Korisnik je dodan."; else echo "Nema dodanog korisnika:". mysqli_error (); mysqli_close ($ veza);

SQL upit sastoji se od naredbe INSERT INTO, korisnika baze podataka, zatim naziva polja u zagradama, zatim riječi VALUE, nakon čega slijede dodane vrijednosti u zagradama. Navode se vrijednosti.

Sintaksa zahtjeva izgleda ovako:

INSERT INTO table_name (column1, column2) VALUE ("x1", "x2")

Navodi u drugim zagradama su obavezni.

Varijable mogu biti umjesto vrijednosti. Evo primjera:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ login = "zeus"; $ password = "pass123"; $ query = "INSERT INTO users (login, password) VALUE (" $ login "," $ password ")"; if (mysqli_query ($ link, $ query)) echo "Korisnik je dodan."; else echo "Nema dodanog korisnika:". mysqli_error (); mysqli_close ($ veza);

Naravno, ovaj primjer nema puno smisla. Početnicima bi moglo biti korisno čuti da se na taj način u bazu podataka bilježe prijave i lozinke koje korisnici daju tijekom registracije. Ti se podaci spremaju u varijable, a zatim se nakon provjere zapisuju u bazu podataka.

Postoji brz način za umetanje više redaka s jednim INSERT upitom:

INSERT INTO users (login, password) VALUE ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")

Kao što vidite, popisani podaci jednostavno su odvojeni zarezima.

Dakle, pomoću naredbe INSERT naučili smo kako dodavati zapise u tablicu. Krenuti dalje.

Tablični prikaz: Naredba SELECT

Sada imamo tablicu korisnika koja ima retke. Prethodna skripta može se pokrenuti više puta i svaki put će dodati redak u tablicu. Sada možda ne znamo koliko redaka imamo u tablici. I želim znati što smo u njoj napisali.

Da biste dohvatili podatke iz tablice, upotrijebite naredbu SQL SELECT. Znak * znači da tražimo sve podatke, a zatim nakon riječi FROM upisujemo naziv tablice iz koje želimo primati podatke.

Upitajmo sve podatke iz tablice korisnika:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "SELECT * FROM users"; $ rezultat = mysqli_query ($ veza, $ upit); if (! $ result) echo "Došlo je do pogreške:". mysqli_error (); else echo "Podaci su primljeni"; mysqli_close ($ veza);

Funkcija mysqli_query () vratila nam je identifikator rezultata upita - stavili smo ga u varijablu i ubuduće ćemo raditi s njim koristeći druge PHP funkcije.

Broj zapisa u zahtjevu

Shvatimo koliko je redaka u našem upitu? Pokrenuo sam skriptu za dodavanje zapisa u tablicu, ne sjećam se koliko sam puta, a sada ne znam koliko redaka ima u mojoj tablici.

Funkcija mysqli_num_rows () koristi se za određivanje broja redaka u rezultatu upita. Ovoj funkciji se prosljeđuje identifikator rezultata upita i ona će vratiti broj zapisa.

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "SELECT * FROM users"; $ rezultat = mysqli_query ($ veza, $ upit); if (! $ result) echo "Došlo je do pogreške:". mysqli_error (); else echo "Podaci su primljeni"; $ count = mysqli_num_rows ($ rezultat); echo "Ukupno redaka u tablici: $ count."; mysqli_close ($ veza);

Ako moramo saznati broj zapisa u tablici, tada navedena metoda nije najprikladnija. Ovdje smo saznali broj zapisa pronađenih u upitu, ali se broj zapisa u tablici traži drugačije.

Broj zapisa u tablici SELECT COUNT (*)

Da biste saznali broj zapisa u tablici, možete koristiti naredbu SELECT COUNT (*) FROM table_name.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); $ query = "SELECT * FROM users"; $ rezultat = mysqli_query ($ veza, $ upit); if (! $ result) echo "Došlo je do pogreške:". mysqli_error (); else echo "Podaci su primljeni."; $ count = mysqli_fetch_row ($ rezultat); echo "Ukupno redaka u tablici: $ count."; mysqli_close ($ veza);

Imajte na umu da smo ovdje koristili novu PHP funkciju mysqli_fetch_row () za dohvaćanje podataka. Ova funkcija vraća redak rezultata upita u obliku jednostavnog niza, u našem slučaju postoji jedno polje u retku i ima indeks 0.

Pregled rezultata upita u petlji

Nakon izvršavanja SQL upita naredbom SELECT i dobivanja identifikatora rezultata upita, PHP stvara interni pokazivač u skupu zapisa rezultata. Ovaj pokazivač automatski prelazi na sljedeći zapis nakon upućivanja na trenutni zapis. Ovaj mehanizam čini vrlo lakim ponavljanje kroz skup rezultata upita SELECT.

PHP ima nekoliko funkcija koje se mogu koristiti za dobivanje niza polja za svaki redak rezultirajućeg upita. Uzmimo kao primjer funkciju mysqli_fetch_row (). Ova funkcija prosljeđuje ID zahtjeva i vraća niz. Tako se u petlji skenira cijeli rezultat upita; nakon što dođe do kraja rezultata upita, funkcija će vratiti false.

Dakle, pitamo sve podatke iz tablice korisnika (SELECT * FROM users).


"; while ($ row = mysqli_fetch_row ($ result)) (echo" Prijava: $ row. Lozinka: $ row.
";) mysqli_close ($ veza);

Mysqli_fetch_row () vraća jednostavan niz. U svakoj iteraciji petlje iz tablice ćemo primati niz s retkom, čijim poljima možemo pristupiti navođenjem numeričkog indeksa.

Isto se može učiniti pomoću funkcije mysql_fetch_assoc (), vraća asocijativni niz.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); $ result = mysqli_query ($ link, "SELECT * FROM users"); if (! $ result) echo "Došlo je do pogreške:". mysqli_error (); else echo "Podaci su primljeni.
"; while ($ row = mysqli_fetch_assoc ($ result)) (echo" Prijava: $ row. Lozinka: $ row.
";) mysqli_close ($ veza);

Tu su i funkcije mysqli_fetch_array () - vraća bilo koju vrstu niza, a mysqli_fetch_object () - vraća objekt.

SELECT DISTINCT Upit - Jedinstvene vrijednosti polja

Kreirajmo novu tablicu:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); // ispuštanje postojeće tablice mysqli_query ($ link, "DROP TABLE users"); // izrada nove tablice $ query = "CREATE TABLE users (name VARCHAR (20), surname VARCHAR (20), age TINYINT UNSIGNED)"; if (mysqli_query ($ link, $ query)) echo "Tablica je stvorena.
"; else echo" Tablica nije stvorena: ". mysqli_error (); // funkcija za dodavanje zapisa u tablicu funkcija add_new_line ($ link, $ query) (if (! mysqli_query ($ link, $ query)) echo" Korisnik nije dodano: ". mysqli_error ();) // dodaj zapise add_new_line ($ link," INSERT INTO users (ime, prezime, dob) VALUE ("Max", "Jayson", "33") "); add_new_line ($ link , "INSERT INTO users (ime, prezime, dob) VALUE (" Bob "," Freeman "," 26 ")"); add_new_line ($ link, "INSERT INTO users (ime, prezime, dob) VALUE (" Sara " , "Lopes", "65") "); add_new_line ($ link," INSERT INTO users (ime, prezime, dob) VALUE ("Serg", "Pupin", "29") "); add_new_line ($ link, "INSERT INTO users (ime, prezime, dob) VALUE (" Serg "," Borman "," 43 ")"); add_new_line ($ link, "INSERT INTO users (ime, prezime, dob) VALUE (" Max ", "Lopes", "21") "); // prikazuje sadržaj tablice u pregledniku $ result = mysqli_query ($ link," SELECT * FROM users "); if (! $ Result) echo" Došlo je do pogreške: ". Mysqli_error (); else echo" Podaci su primljeni.
"; while ($ row = mysqli_fetch_assoc ($ result)) (echo" Ime: $ row. Prezime: $ row. Dob: $ row. "
";) mysqli_close ($ veza);

Dakle, imamo novu, složeniju tablicu s jedinstvenim zapisima. Pogledajmo sada koliko imena imamo u bazi podataka.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); $ result = mysqli_query ($ link, "ODABERITE RAZLIKUJUĆI NAZIV OD korisnika"); echo "Ukupno imena:". mysqli_num_rows ($ rezultat). "
"; echo" Popis imena:
"; while ($ name = mysqli_fetch_row ($ result)) (echo" $ name
";) mysqli_close ($ veza);

SQL upit "SELECT DISTINCT name FROM users" vratio je rezultat sa svim jedinstvenim imenima u našoj tablici. Svaki jedinstveni naziv u novom retku u rezultatu upita.

Sortiranje rezultata - NARUČI PO

Dodavanjem naredbe ORDER BY u SQL upit sortiramo rezultat upita uzlaznim redoslijedom (brojeve i slova po abecedi). Evo primjera u kojem možete usporediti uobičajeni upit i sortirati prema dobi (polje dobi).



";) echo" Poredaj po starosti:
"; $ result = mysqli_query ($ link," SELECT * FROM users ORDER BY age "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime: $ line. Doba: $ crta.
";) mysqli_close ($ veza);

Polje dobi u naredbi ORDER BY možete zamijeniti poljem imena i vidjeti rezultat.

Za sortiranje rezultata upita obrnutim redoslijedom, koristite naredbu ORDER BY age DESC.

Podudaranje uvjeta - GDJE

Dodavanjem naredbe WHERE u SQL upit upitat ćemo samo one zapise koji odgovaraju uvjetu. Na primjer, napravimo zahtjev za osobe mlađe od 30 godina.

Da biste to učinili, upotrijebite SQL upit "SELECT * FROM users WHERE age

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); odjek "Ljudi mlađi od 30 godina:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE age<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
";) mysqli_close ($ veza);

Također možemo odmah sortirati rezultat uzlaznim redoslijedom prema dobi:
"SELECT * FROM users WHERE age<30 ORDER BY age ".

Ako postavimo upit "SELECT name FROM users WHERE age<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

Možemo upitati vrijednosti dva polja: "SELECT name, age FROM users WHERE age

Sada zatražite sve korisnike s imenom "Max".

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "All Max:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name = "Max" "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime: $ line. Dob: $ line.
";) mysqli_close ($ veza);

I još jedan primjer upita - odabrat će samo imena iz tablice korisnika, sve osim maks.

SELECT name FROM users WHERE name! = "Max"

To je sve s klauzulom WHERE.

Ograničavanje zapisa - LIMIT

Dodavanjem naredbe LIMIT u SQL upit ograničit ćemo veličinu rezultata.

Upit koji ispisuje prva tri zapisa: "SELECT * FROM users LIMIT 3". Pogledajmo kako to funkcionira:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "Sadržaj tablice:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime: $ line. Starost: $ line.
";) jeka"

Prva tri unosa:
"; $ result = mysqli_query ($ link," SELECT * FROM users LIMIT 3 "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime: $ line. Dob: $ line .
";) jeka"

Druga tri unosa:
"; $ result = mysqli_query ($ link," SELECT * FROM users LIMIT 3, 3 "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime: $ line. Starost: linija $ ...
";) mysqli_close ($ veza);

Također smo ovdje upotrijebili upit: "SELECT * FROM users LIMIT 3, 3". Druga trojka označava pomak u rezultatu upita.

Podudaranje uzoraka - LIKE

Jezik SQL podržava jednostavne obrasce. Za to se koristi naredba LIKE, a uzorak se navodi pomoću znaka%.

Evo primjera upita koji će vratiti sve zapise s imenima koji počinju slovom S.

ODABERITE * OD korisnika GDJE ime LIKE "S%"

Testiranje zahtjeva:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "Sadržaj tablice:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime: $ line. Starost: $ line.
";) jeka"

Imena koja počinju sa S:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name LIKE "S%" "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime: $ line . Dob: linija.
";) mysqli_close ($ veza);

Evo primjera upita koji će vratiti sve zapise s prezimenima koja završavaju slovom s.

ODABERI * OD korisnika GDJE ime LIKE "% s"

Podudaranje uvjeta - IN

Ovaj upit pomoću naredbe IN vratit će samo one retke koji strogo odgovaraju uvjetu.

Na primjer, zanimaju nas ljudi u dobi od 21, 26 i 33 godine.

SELECT * FROM users WHERE age IN (21,26,33)

Testiranje zahtjeva:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "Sadržaj tablice:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime: $ line. Starost: $ line.
";) jeka"

Osobe potrebne dobi (21, 26, 33):
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE age IN (21, 26, 33) "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Prezime : $ line. Dob: $ line.
";) mysqli_close ($ veza);

Maksimalna i minimalna vrijednost u stupcu

Odabire najveću vrijednost dobi u tablici korisnika.

SELECT max (dob) OD korisnika

Sljedeći upit odabire podatke iz tablice korisnika pomoću polja za ime i dob, gdje je dob minimalna vrijednost.

SELECT ime, min (dob) OD korisnika

Ažuriranje zapisa - AŽURIRAJ

Postavimo Maxa Lopesa na 15 godina. To se radi pomoću upita MySQL:

UPDATE users SET age = "15" WHERE name = "Max" AND surname = "Lopes"

Uočite novu naredbu AND (i - na engleskom znači "i") u upitu. Ako ne navedemo prezime, tada će za sve Max u tablici biti postavljena dob od 15 godina.

Jedan upit može ažurirati dva ili više polja u jednom retku. To se radi na sljedeći način:

UPDATE users SET age = "18", surname = "Coocker" WHERE id = "3"

Naša tablica nema polje id, pa ovaj upit neće raditi s njim. No, definitivno ćemo naučiti ovo polje koje sadrži jedinstvene brojeve redaka.

Izbriši zapis - IZBRIŠI

Upitajte MySQL bazu podataka da biste izbrisali zapis:

IZBRIŠI OD korisnika WHERE id = "10"

Opet, u našoj tablici nema polja id. Ali iz njega možemo ukloniti sve osobe mlađe od 18 godina.

IZBRIŠI OD korisnika GDJE su dob< "18"

DROP TABLA

Upit baze podataka MySQL koji briše cijelu tablicu korisnika:

DROP TABLE korisnici

Ispuštanje stupca - ALTER TABELA ... DROP ...

Ponekad ćete možda morati izbrisati stupac iz tablice, na primjer, uklonimo stupac dobi iz korisnika:

ALTER TABLE korisnici DROP dob

Ovaj MySQL upit trajno i neopozivo je izbrisao stupac.

Dodaj stupac - ALTER TABLE ... ADD ...

Ponekad ćete možda htjeti dodati stupac u postojeću tablicu, na primjer, dodajmo stupac dobi u tablicu korisnika:

ALTER TABLE korisnici DODAJTE dob TINYINT UNSIGNED

Preimenovanje stupca - ALTER TABLE ... CHANGE ...

Ponekad može biti potrebno preimenovati stupac, na primjer preimenovati stupac dobi u vozrast. Mi to radimo ovako:

ALTER TABLE users CHANGE dob vozrast TINYINT UNSIGNED

Ovaj MySQL upit preimenovao je stupac dobi u vozrast s tipom podataka TINYINT UNSIGNED.

Preimenovanje tablice - PREimenuj tablicu ... u ...

Ponekad može biti potrebno preimenovati tablicu:

PREMENI TABLICU korisnicima U narode

Ispuštanje baze podataka - DROP DATABASE

Ovaj upit može ispustiti bazu podataka s imenom testera:

DROP DATABASE tester

Stvaranje baze podataka - CREATE DATABASE

Ovaj upit stvara bazu podataka pod nazivom tester:

CREATE DATABASE tester

Ovaj zahtjev mi odgovara u Denveru, ali na hostingu možda neće funkcionirati ako korisnik baze podataka nema dopuštenje za brisanje.

Ishodi

Tako smo se u ovom dijelu upoznali s upitima za MySQL. Mnogi zahtjevi koje smo razmotrili nisu nam često korisni u procesu rada, ali morate ih znati, jer će im svakako dobro doći u procesu razvoja skripti.

Neki se zahtjevi obično upućuju samo s phpMyAdmina (na primjer stvaranje i brisanje baza podataka).

U radu web mjesta obično trebate dodati zapis u tablicu, urediti zapis ili izbrisati zapis iz tablice.

Sljedeći korak je istraživanje MySQL tipova podataka.