Računalniki Windows Internet

Pošiljanje poizvedb v zbirko podatkov v PHP. Vsemogočna poizvedba - dokončni vodnik poizvedb v mysql iz poizvedbe php mysqli

Mislim, da so vsi slišali za pravilo Pareto. Na katerem koli področju 20% truda daje 80% rezultata. Na primer, 20% garderobe nosite 80% časa, 20% vaših strank ustvari 80% vašega dohodka. Podobno v Google Preglednicah: če poznate 20% obstoječih funkcij, lahko rešite 80% vseh možnih težav.

Zdi se mi, da je poizvedba ena najbolj uporabnih funkcij Google Preglednic. Toda v Googlovi pomoči je opisano zelo površno in celotna moč te funkcije ni razkrita. Ob natančnejšem pregledu postane jasno, da lahko nadomesti večino obstoječih funkcij.

Za delo z QUERY boste potrebovali osnovno znanje SQL. Za tiste, ki ne veste, naj vas ne ustraši, funkcija QUERY dejansko podpira najosnovnejše funkcije SQL.

Sintaksa QUERY

QUERY (podatki; poizvedba; [glave])
  • podatkov- to je niz celic, ki bodo služile kot zbirka podatkov za poizvedbo SQL;
  • poizvedba- besedilo poizvedbe SQL;
  • naslovi Je izbirni argument, pri katerem lahko določite, koliko prvih vrstic matrike vsebuje glave.

Za čim boljše zaznavanje dodatnih informacij predlagam, da odprete in kopirate naslednjo Google Preglednico.

V doxu, ki ste ga pravkar naredili, je več listov. List DB je baza podatkov, do katere bomo dostopali s funkcijo QUERY. Listi ravni vsebujejo primere, ki jih bomo pogledali v tem članku. Primer se bo z vsako novo stopnjo še bolj zapletel.

Načrt poizvedb SQL v funkciji poizvedbe

Vsaka poizvedba SQL je sestavljena iz ločenih blokov, ki se pogosto imenujejo obrekovanje. Funkcija SQL za poizvedbo uporablja sintakso poizvedbenega jezika API za vizualizacijo Google, ki podpira naslednje liste:

  • izberite- naštevanje polj, ki jih bo zahteva vrnila;
  • kje- vsebuje seznam pogojev, po katerih bo filtrirano podatkovno polje, obdelano z zahtevo;
  • skupina po- vsebuje seznam polj, po katerih želite združiti rezultat;
  • pivot- Pomaga pri izgradnji navzkrižnih tabel z uporabo vrednosti enega stolpca kot imen stolpcev končne tabele;
  • naroči po- je odgovoren za razvrščanje rezultatov;
  • omejitev- s tem delom poizvedbe lahko nastavite omejitev števila vrstic, ki jih vrne poizvedba;
  • odmik- s pomočjo tega obrekovanja lahko nastavite število prvih vrstic, ki jih poizvedba ne bi smela obdelati;
  • nalepko- ta obrekovanje je odgovorno za imena polj, ki jih vrne poizvedba;
  • format- je odgovoren za obliko izhodnih podatkov;
  • opcije - omogoča nastavitev dodatnih parametrov za izhod podatkov.

Hello World for Query (Izberi)

Pojdimo na list Level_1 in poglejmo formulo v celici A1.

Poizvedba (DB! A1: L1143; "izberite * omejitev 100")

Del formule " DB! A1: L1143 " odgovoren za bazo podatkov, iz katere bomo izbrali. Drugi del " izberite * omejitev 100"Vsebuje besedilo same zahteve. "*" V tem primeru pomeni vrnitev vseh polj v zbirki podatkov. Z uporabo " meja 100»Omejimo izhod na največ 100 vrstic. To je primer najpreprostejše poizvedbe. Iz baze podatkov smo izbrali prvih 100 vrstic. To je nekakšen "Hello world" za funkcijo Query.

Uporaba filtrov in razvrščanje (Kje, Naroči po)

Pojdite na list Level_2. Izberemo le nekatera polja, ki jih potrebujemo, in nastavimo pogoje filtriranja in razvrščanja. Na primer, podatke uporabljamo samo za oglaševalske akcije Campaign_1 in Campaign_2 za obdobje od 22. do 25. oktobra 2015. Razvrstimo jih po padajočem vrstnem redu glede na vsoto sej. Za filtriranje in razvrščanje morate besedilu zahteve dodati opis obrekovanja Kje in Naročite... Za prikaz zgoraj opisanega primera v tabelo rezultatov potrebujemo polja Oglaševalska akcija, Datum in Sesije. Ti so tisti, ki jih je treba uvrstiti med obrekovanje. Izberite.

Sklicevanje na polja baze podatkov se izvaja prek imen stolpcev delovnega lista, na katerem je zbirka podatkov.

V našem primeru so podatki, ki se nahajajo na listu DB in se nanašajo na določena polja, zapisani kot ime stolpcev lista. Tako so obvezna polja v naslednjih stolpcih:

  • polje Datum- stolpec A;
  • polje Kampanja- stolpec B;
  • polje Seje- stolpec G.

V skladu s tem bo del poizvedbe, ki je odgovoren za seznam izpisanih podatkov, videti tako:

Izberite A, B, G

Naslednja v zahtevi je obrekovanje Kje... Ko pišete zahtevo, je treba obrekovati tako, kot je opisano v prvem razdelku tega člena. Po razglasitvi Kje moramo navesti pogoje filtriranja. V tem primeru podatke filtriramo po imenu oglaševalske akcije (oglaševalska akcija) in datumu (datum). Uporabljamo več pogojev filtriranja. V besedilu poizvedbe mora biti med vsemi pogoji logični operator OR ali AND. Filtriranje po datumih se nekoliko razlikuje od filtriranja po numeričnih in besedilnih vrednostih, za njegovo uporabo morate uporabiti operator Date. Del poizvedbe za filtriranje podatkov izgleda tako:

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

Filtriranje podatkov z oklepaji smo razdelili na dva logična dela: prvi filtrira po datumih, drugi - po imenu oglaševalske akcije. Na tej stopnji je formula, ki opisuje podatke, ki jih je treba izbrati, in pogoji za filtriranje podatkov videti tako:

Poizvedba (DB! A1: L1143; "Izberite A, B, G KJE (A> = datum" 2015-10-22 "IN A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")")

Lahko ga na primer kopirate in prilepite na nov list dokumenta, ki je v tej objavi uporabljen kot primer, in dobili boste naslednji rezultat:

Poleg običajnih logičnih operatorjev (=,<, >) člen WHERE podpira dodatne operaterje filtriranja:

  • vsebuje- preveri vsebino določenih znakov v nizu. Na primer, KJE A vsebuje "John", bo v filter vrnilo vse vrednosti iz stolpca A, ki vsebujejo John, na primer John Adams, Long John Silver;
  • se začne z- filtrira vrednosti po predponi, torej preveri znake na začetku vrstice. Začne se na primer z 'en' vrne inženiring in angleščino;
  • konča z- filtrira vrednosti na koncu vrstice. Na primer črta 'Kavboj "Vrnjeno bo z" konča z "fantom" ali "konča z" y "";
  • ujema- se ujema z regularnim izrazom. Na primer: kje se ujema ‘. * Ia 'Vrnila bo vrednosti Indije in Nigerije.
  • kot - poenostavljena različica regularnih izrazov preveri, ali se niz ujema z danim izrazom z uporabo nadomestnih znakov. Trenutno podpora podpira dva nadomestna znaka: "%" pomeni poljubno število znakov v nizu in "_" pomeni kateri koli znak. Na primer, "kjer se bo ime, kot je" fre% "" ujemalo s vrsticami 'Fre ’, 'Fred ', In' freddy ’.

Zahteva je že filtrirala podatke za določeno obdobje in pustila samo oglaševalske akcije, ki jih potrebujemo. Ostaja samo razvrstiti rezultat v padajočem vrstnem redu glede na število sej. Razvrščanje v teh poizvedbah se običajno izvaja za SQL z obrekovanjem Naročite po... Sintaksa je precej preprosta: navesti morate le polja, po katerih želite razvrstiti rezultat, in določiti tudi vrstni red razvrščanja. Privzeto je asc order, to je naraščajoče. Če pod imenom polja podate parameter desc, bo poizvedba vrnila rezultat v padajočem vrstnem redu podanega v poševnici Naročite po polja.

V našem primeru bo vrstica v besedilu zahteve odgovorna za filtriranje:

Naročite po G desc

V skladu s tem je končni rezultat formule na listu Level_2, ki rešuje problem, ki ga potrebujemo, videti tako:

Poizvedba (DB! A1: L1143; "IZBERI A, B, G KJE (A> = datum" 2015-10-22 "IN A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2") ORDER BY G DESC")

Zdaj lahko filtrirate in razvrščate podatke z najpreprostejšo sintakso SQL in funkcijo QUERY.

".
Morda fantje iz moskovske pisarne nimajo časa, zato bo na voljo brezplačen prevod Query Language Reference (različica 0.7).
Google Visualization API. Jezik poizvedb (različica 0.7)
Jezik poizvedb Google Visualization API vam omogoča upravljanje podatkov s poizvedovanjem o viru podatkov.

Običajno morate za vizualizacijo posredovati podatke v določeni obliki. Za tortni grafikon sta na primer potrebna dva stolpca: besedilna oznaka in številska vrednost. Vir podatkov pa morda ne ustreza tej strukturi. Lahko vsebuje več stolpcev ali pa bo njihov vrstni red drugačen od tistega, ki je potreben za diagram.
Jezik poizvedb nam omogoča strukturiranje podatkov na način, ki ga potrebujemo za dosego rezultata.
Sintaksa jezika poizvedbe je podobna SQL. Tisti, ki znajo uporabljati SQL, bodo lahko hitro obvladali jezik poizvedb. Oddelek o skladnji opredeljuje razlike v teh jezikih.
Upoštevajte, da za upodabljanje ni vedno treba uporabiti jezika poizvedb. Za njegovo uporabo je potrebna podlaga. Na vsebino.

Uporaba jezika poizvedb

Niz poizvedbe lahko viru podatkov dodate na dva načina: iz kode JavaScript ali kot parameter do povezave do vira podatkov. Če vaša povezava ne vsebuje parametrov poizvedbe, se privzeto vrne celoten nabor podatkov. Ta niz lahko spremenite tako, da poizvedbo prilagodite samemu viru podatkov.

Če funkcijo VPRAŠANJE uporabljate v Google Preglednicah, lahko preskočite naslednje korake in se pomaknete na naslednji del.

Nastavitev zahteve iz JavaScripta

Če želite nastaviti niz poizvedbe iz kode JavaScript, morate poklicati metodo setQuery google.visualization.Query class.
var poizvedba = nova google.visualization.Query (DATA_SOURCE_URL);
query.setQuery ("izberite oddelek, skupino vsote (plače) po oddelkih");
query.send (handleQueryResponse);

Niz poizvedbe v vir podatkov lahko dodate s parametrom tq... Tako je mogoče uporabiti vizualizacije, ki so jih napisali drugi razvijalci, preprosto s prilagoditvijo njihovega nabora podatkov.
Niz poizvedbe mora biti pravilno kodiran z URL -jem. Uporabite lahko funkcijo JavaScript encodeURICcomponent za kodiranje ali pa ročno z orodjem na koncu razdelka.
Primer
Razmislite o primerni poizvedbi za Google Preglednice (ne pozabite, da so identifikatorji stolpcev vedno črke. Imena stolpcev pri objavi niso identifikatorji. V poizvedbi je treba uporabiti identifikatorje stolpcev)
Po kodiranju bo zahteva videti tako:
izberite% 20A% 2C% 20sum (B)% 20skupina% 20by% 20A
Recimo, da je naslov podatkovne tabele naslednji:
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE
Dodajte parameter zahteve & tq = YOUR_QUERY_STRING na povezavo do tabele in dobite pripravljen niz poizvedbe
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE&tq=select%A%2C%20sum(B)%20group%20by%20A

Jezikovna skladnja

Pregled

Moj jezik poizvedb je zelo podoben SQL. Vendar pa je treba upoštevati nekatere posebnosti.
Podatkovna tabela
Ta dokument vsebuje izraz "Podatkovna tabela", ki se nanaša na rezultate poizvedbe. Tabelo sestavljajo vrstice in stolpci. Vsak stolpec ima naslednje lastnosti:
  • ID (ali ID stolpca)... Uporablja se za sklicevanje na stolpce tabele. Upoštevajte, da se morate stolpec sklicevati le na identifikator. Trik: poskusite ne uporabljati presledkov v identifikatorjih, to lahko povzroči težave pri urejanju zahteve. Poleg tega morajo biti vsi identifikatorji s presledki zaprti v hrbet.
  • Oznaka... To je niz, ki je običajno prikazan končnim uporabnikom. Na primer legenda v tortnem grafikonu ali naslov tabelnega grafikona. Ne velja za funkcijo QUERY () v Google Preglednicah.
  • Vrste podatkov... Podprte so naslednje vrste podatkov: niz, številka, logična vrednost, datum (datum), datum in ura (datum -čas), čas (čas dneva). Vse vrednosti v stolpcu bodo podatkovnega tipa tega stolpca ali ničelne. Ti podatki so zelo podobni vrstam JavaScript, niso enaki. Te so opisane v razdelku Literals.
  • Predloge za oblikovanje... Podatkovne tabele lahko podpirajo vzorce oblikovanja za vse ali nekatere stolpce. Te so opisane v razdelku Oblikovanje.
Podatkovna tabela, uporabljena v vseh primerih
V tem dokumentu primeri uporabljajo tabelo z naslednjimi vrstami podatkov in stolpcev:
ime
vrvica
oddelek
vrvica
čas za kosilo
čas dneva

Plača
številko

hireDate
datum
starost
številko
isSenior
logično
seniorityStartTime
Datum čas
Janez Inž 12:00:00 2005-03-19 35 prav 2007-12-02 15:56:00
Dave Inž 12:00:00 2006-04-19 27 napačno nič
Sally Inž 13:00:00 2005-10-10 30 napačno nič
Ben Prodaja 12:00:00 2002-10-10 32 prav 2005-03-09 12:30:00
Dana Prodaja 12:00:00 2004-09-08 25 napačno nič
Mike Trženje 13:00:00 2005-01-10 24 prav 2007-12-30 14:40:00

Jezikovni operaterji

Jezik poizvedbe je sestavljen iz naslednjih operatorjev, sestavljenih iz ene ali dveh besed. Operaterji morajo slediti drug drugemu v vrstnem redu, ki je prikazan v tabeli:
Operater Uporaba
izberite Izbere, kateri stolpci in v kakšnem vrstnem redu bodo vrnjeni. Če je operator izpuščen, bodo vrnjeni vsi stolpci tabele.
Vrne samo tiste vrstice tabele, ki ustrezajo pogoju. Če je operator izpuščen, bodo vrnjene vse vrstice v tabeli.
skupina po Združi vrednosti po vrsticah.
pivot Pretvori edinstvene vrednosti v stolpcih v nove stolpce, podobno vrtilni tabeli.
naroči po Razvrsti nize glede na vrednosti.
omejitev Nastavi omejitev vrstic, ki bodo vrnjene.
odmik Preskoči določeno število vrstic iz izhoda.
nalepko Nastavi oznake stolpcev.
format Oblikuje vrednosti v podanih stolpcih glede na vzorce oblikovanja.
opcije Nastavi dodatne parametre.
od Operater from se ne uporablja.
Izberite
Stavek select določa, katere stolpce je treba vrniti in v kakšnem vrstnem redu. Če ni podan noben operater ali je podan izbor *, bodo vsi stolpci tabele vrnjeni v prvotnem vrstnem redu. Na stolpce se lahko sklicujete z identifikatorji, ne pa tudi z oznakami. Identifikatorji v Google Preglednicah so imena ene ali dveh črk (A, B, C, ..., AC, ..., DC, ...).
Parametri operaterja so lahko identifikatorji stolpcev, združene funkcije, skalarne funkcije ali aritmetični operaterji.
Primeri:
izberite *
izberite oddelek, plača
izberite max (plača)
email naslovdatum):

Dobimo rezultat:
čas za kosilo ime
12:00:00 Janez
12:00:00 Dave
13:00:00 Sally
12:00:00 Ben
12:00:00 Dana
13:00:00 Mike
Klavzula where se uporablja za vrnitev samo tistih vrstic, ki ustrezajo pogojem.
Za opis pogojev se uporabljajo preprosti primerjalni operaterji<=, <, >, >=, =, !=, <>... Oba operaterja! =,<>pomeni ni enako... Strune primerjamo po svojem leksikografskem pomenu. Upoštevajte, da se enakost preverja z operaterjem =, ne pa z == kot v mnogih jezikih... Primerjava z ničelno je izvedena prek ničelna in ni ničelna. Pri uporabi QUERY () v Google Preglednicah je običajno, da je polje niza prazno "" in ne ničelno.
Z logičnimi operaterji lahko kombinirate več pogojev in ali ne. Oklepaji se uporabljajo za opredelitev eksplicitne prednosti.

Klavzula where uporablja tudi dodatne operaterje za bolj zapletene primerjave nizov. Ti operaterji sprejmejo dva argumenta, ki morata biti niz, vsak argument brez niza (datum, številka) pa se pred primerjavo pretvori v niz. Primerjava razlikuje med velikimi in malimi črkami (za izravnavo te funkcije uporabite skalarne funkcije zgornji (), spodnji ()).
vsebuje - se ujema s podnizom. Izraz bo vrnil true, če se del niza popolnoma ujema z danim argumentom - podnizom. Na primer, če ime vsebuje "John", se bo vrnilo "John", "John Adams", "Long John Silver" vendar ne "John Adams".

Primeri:
izberite *
izberite oddelek, plača
izberite max (plača)
Naslednji primer prikazuje uporabo sklicevanja na identifikatorje s presledki ( email naslov) in identifikatorji, ki se ujemajo z imeni rezerviranih besed ( datum):
izberite `e -poštni naslov`, ime,` datum`
Za tabelo iz primera uporabimo naslednjo poizvedbo:
Dobimo rezultat:
čas za kosilo ime
12:00:00 Janez
12:00:00 Dave
13:00:00 Sally
12:00:00 Ben
12:00:00 Dana
13:00:00 Mike
vir mysql_query(poizvedba niza [, identifikator povezave vira])

mysql_query () pošlje zahtevo v aktivno bazo podatkov strežnika, na katero se nanaša podani kazalec. Če je link_identifier izpuščen, se uporabi zadnja odprta povezava. Če ni odprtih povezav, se funkcija poskuša povezati s sistemom DBMS, podobno kot funkcija mysql_connect () brez parametrov. Rezultat poizvedbe je medpomnjen.

Komentar: Niz poizvedbe se NE sme končati s podpičjem.

Samo za poizvedbe SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query () vrne kazalec na rezultat poizvedbe ali LAŽNOče zahteva ni bila izpolnjena.
V drugih primerih (INSERT, UPDATE, DELETE, DROP itd.), mysql_query () vrača PRAV v primeru uspešne zahteve in LAŽNO v primeru napake. Vrednost ni enaka LAŽNO označuje, da je bila zahteva uspešno zaključena. Ne govori o številu prizadetih ali vrnjenih vrstic. Možno je, da uspešna zahteva ne bo vplivala na nobeno vrstico.

Naslednja poizvedba je napačna in mysql_query () se bo vrnil LAŽNO :

mysql_query () velja tudi za napačno in se bo vrnilo LAŽNOče nimate dovolj pravic za delo s tabelo, navedeno v poizvedbi.

Pri delu z rezultati poizvedb lahko uporabite funkcijo mysql_num_rows () poiščite število vrstic, ki jih vrne poizvedba SELECT, ali mysql_affected_rows () poiščite število vrstic, obdelanih z poizvedbami DELETE, INSERT, REPLACE ali UPDATE.

Samo za poizvedbe SELECT, SHOW, DESCRIBE, EXPLAIN, function mysql_query () vrne kazalec na rezultat, ki ga je mogoče uporabiti v funkciji mysql_fetch_array () in druge funkcije, ki delujejo z rezultati poizvedb. Ko končate delo z rezultatom, lahko s funkcijo sprostite vire, ki so bili uporabljeni za shranjevanje

Opomba: Nadgradnja Power Query na voljo v Excelu 2016 kot skupina ukazov Prenesite in pretvorite... Podatki v tem članku veljajo tako za Power Query kot za novo skupino. Za več informacij glejte Prenos in pretvorba v Excelu 2016.

V Power Query operacija Dodaj ustvari novo poizvedbo, ki vsebuje vse vrstice iz prve poizvedbe in nato vse vrstice iz druge poizvedbe.

Varnostno opozorilo: Ravni zasebnosti preprečiti nenamerno združevanje podatkov iz več virov, ki so lahko zasebni ali organizacijski. Pri nekaterih poizvedbah lahko uporabnik nenamerno pošlje podatke iz zasebnega vira podatkov v drug vir. Napadalci lahko izkoristijo to priložnost. Power Query analizira vsak vir podatkov in določi njegovo raven zasebnosti: javno, organizacijsko in zasebno. Za več informacij o stopnjah zasebnosti glejte Ravni zasebnosti.

Dodajanje v teku

Izvedete lahko dve vrsti operacije dodajanja: vmesni dodatek ali inline append... Uporaba vmesni dodatek za vsako operacijo dodajanja se ustvari nova poizvedba. Ob inline append obstoječi poizvedbi dodajate podatke, dokler ne dosežete končnega rezultata. Rezultat je nov korak na koncu trenutne poizvedbe.

Inline add

Vmesni dodatek


Poglej tudi:

Opomba: Urejevalnik poizvedb prikazano samo pri nalaganju, urejanju ali ustvarjanju nove zahteve z Power Query... Video prikazuje okno urejevalnik poizvedb ki se prikaže, ko spremenite poizvedbo v Excelovem delovnem zvezku. Za ogled urejevalnik poizvedb brez prenosa ali spreminjanja obstoječe poizvedbe v delovnem zvezku, v razdelku Pridobivanje zunanjih podatkov na zavihku traku Power Query izberite Iz drugih virov> Prazno poizvedbo... Video prikazuje eno od načinov prikaza urejevalnik poizvedb.

Naučili smo se, kako se povezati s strežnikom MySQL, izbrati bazo podatkov za delo, se naučiti funkcije PHP za pošiljanje poizvedb na strežnik MySQL, naučili smo se dveh preprostih poizvedb (ustvarjanje in brisanje tabele) in naučili smo se zapreti povezavo.

Zdaj se bomo poglobili v poizvedbe MySQL. Pa začnimo!

Ustvarjanje tabele - Ustvari tabelo

Zdaj imamo prazno bazo podatkov, v njej ni tabel. Zato najprej ustvarimo tabelo. Kako to storiti, že vemo iz prvega dela.

Tu je skriptna koda, ki bo ustvarila ploščo, ki jo potrebujemo:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Napaka"); $ query = "Ustvari uporabnike tabele (prijava VARCHAR (20), geslo VARCHAR (20))" "; if (mysqli_query ($ link, $ query)) echo "Tabela je ustvarjena."; else echo "Tabela ni ustvarjena:" .mysqli_error (); mysqli_close ($ povezava);

V naši tabeli sta samo dve polji: prijava in geslo. Zaenkrat ne potrebujemo več, ne komplicirajmo postopka.

Tako je tabela ustvarjena.

Dodajanje vrstic (zapisov) v tabelo - INSERT

V tabelo lahko dodate novo vrstico z ukazom insert SQL. Tukaj je primer:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Napaka"); $ query = "INSERT INTO users (login, password) VALUE (" zeus "," pass123 ")"; if (mysqli_query ($ link, $ query)) echo "Uporabnik je bil dodan."; else echo "Ni dodanega uporabnika:". mysqli_error (); mysqli_close ($ povezava);

Poizvedba SQL je sestavljena iz ukaza INSERT INTO, imena zbirke uporabnikov, nato imen polj v oklepajih, nato besede VALUE, ki ji sledijo dodane vrednosti v oklepajih. Navedene so vrednosti.

Sintaksa zahteve izgleda tako:

INSERT INTO_name_tabele (stolpec1, stolpec2) VALUE ("x1", "x2")

Navedki v drugih oklepajih so obvezni.

Spremenljivke so lahko namesto vrednosti. Tukaj je primer:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Napaka"); $ login = "zeus"; $ password = "pass123"; $ query = "INSERT INTO users (login, password) VALUE (" $ login "," $ password ")"; if (mysqli_query ($ link, $ query)) echo "Uporabnik je bil dodan."; else echo "Ni dodanega uporabnika:". mysqli_error (); mysqli_close ($ povezava);

Seveda ima ta primer malo smisla. Začetnikom je lahko koristno slišati, da se tako v bazo podatkov zabeležijo prijave in gesla, ki jih uporabniki navedejo med registracijo. Ti podatki so shranjeni v spremenljivkah, nato pa se po preverjanju zapišejo v bazo podatkov.

Obstaja hiter način za vstavljanje več vrstic z eno poizvedbo INSERT:

VSTAVI uporabnike (prijava, geslo) VALUE ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")

Kot lahko vidite, so našteti podatki preprosto ločeni z vejicami.

Tako smo se z ukazom INSERT naučili dodajanja zapisov v tabelo. Pojdi naprej.

Pogled tabele: Ukaz SELECT

Zdaj imamo uporabniško tabelo z vrsticami. Prejšnji skript se lahko zažene večkrat in vsakič bo tabeli dodal vrstico. Zdaj morda ne vemo, koliko vrstic imamo v tabeli. In želim vedeti, kaj smo zapisali v njem.

Če želite pridobiti podatke iz tabele, uporabite ukaz SQL SELECT. Znak * pomeni, da zahtevamo vse podatke, nato za besedo FROM napišemo ime tabele, iz katere želimo dobiti podatke.

Vprašajmo vse podatke iz tabele uporabnikov:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Napaka"); $ query = "SELECT * FROM users"; $ result = mysqli_query ($ povezava, $ poizvedba); if (! $ result) echo "Prišlo je do napake:". mysqli_error (); else echo "Podatki prejeti"; mysqli_close ($ povezava);

Funkcija mysqli_query () nam je vrnila identifikator rezultata poizvedbe - postavili smo ga v spremenljivko in v prihodnje bomo z njim delali z drugimi funkcijami PHP.

Število zapisov v zahtevi

Ugotovimo, koliko vrstic je v naši poizvedbi? Sam sem zagnal skript za dodajanje zapisa v mizo, ne spomnim se, kolikokrat, zdaj pa ne vem, koliko vrstic je v moji tabeli.

Funkcija mysqli_num_rows () se uporablja za določanje števila vrstic v rezultatu poizvedbe. Ta funkcija posreduje identifikator rezultata poizvedbe in vrne število zapisov.

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Napaka"); $ query = "SELECT * FROM users"; $ result = mysqli_query ($ povezava, $ poizvedba); if (! $ result) echo "Prišlo je do napake:". mysqli_error (); else echo "Podatki prejeti"; $ count = mysqli_num_rows ($ rezultat); echo "Skupno število vrstic v tabeli: $ count."; mysqli_close ($ povezava);

Če moramo ugotoviti število zapisov v tabeli, potem navedena metoda ni najprimernejša. Tu smo ugotovili število zapisov, najdenih v poizvedbi, vendar se število zapisov v tabeli išče drugače.

Število zapisov v tabeli SELECT COUNT (*)

Če želite izvedeti število zapisov v tabeli, lahko uporabite ukaz SELECT COUNT (*) FROM table_name.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); $ query = "SELECT * FROM users"; $ result = mysqli_query ($ povezava, $ poizvedba); if (! $ result) echo "Prišlo je do napake:". mysqli_error (); else echo "Podatki so prejeti."; $ count = mysqli_fetch_row ($ rezultat); echo "Skupno število vrstic v tabeli: $ count."; mysqli_close ($ povezava);

Upoštevajte, da smo tukaj za pridobivanje podatkov uporabili novo funkcijo PHP mysqli_fetch_row (). Ta funkcija vrne vrstico rezultata poizvedbe v obliki preproste matrike, v našem primeru je v vrstici eno polje in ima indeks 0.

Ogled rezultata poizvedbe v zanki

Po izvedbi poizvedbe SQL z ukazom SELECT in pridobivanju identifikatorja rezultata poizvedbe PHP ustvari notranji kazalec v naboru rezultatov. Ta kazalec se samodejno premakne na naslednji zapis, potem ko se sklicuje na trenutni zapis. Ta mehanizem olajša pregledovanje niza rezultatov poizvedbe SELECT.

PHP ima več funkcij, s katerimi lahko dobite matriko, sestavljeno iz njenih polj, za vsako vrstico nastale poizvedbe. Vzemimo za primer funkcijo mysqli_fetch_row (). Ta funkcija posreduje ID zahteve in vrne polje. Tako se v zanki skenira celoten rezultat poizvedbe; ko pride do konca rezultata poizvedbe, bo funkcija vrnila false.

Zato poizvedujemo vse podatke iz tabele uporabnikov (SELECT * FROM users).


"; while ($ row = mysqli_fetch_row ($ result)) (echo" Prijava: $ row. Geslo: $ row.
";) mysqli_close ($ povezava);

Mysqli_fetch_row () vrne preprosto matriko. V vsaki iteraciji zanke bomo iz tabele prejeli matriko z vrstico, do njenih polj lahko dostopamo z določitvijo številskega indeksa.

Enako je mogoče storiti s funkcijo mysql_fetch_assoc (), vrne asociativno matriko.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); $ result = mysqli_query ($ link, "SELECT * FROM users"); if (! $ result) echo "Prišlo je do napake:". mysqli_error (); else echo "Prejeti podatki.
"; while ($ row = mysqli_fetch_assoc ($ result)) (echo" Prijava: $ row. Geslo: $ row. "
";) mysqli_close ($ povezava);

Obstajajo tudi funkcije mysqli_fetch_array () - vrne poljubno vrsto matrike in mysqli_fetch_object () - vrne predmet.

SELECT DISTINCT Query - edinstvene vrednosti polja

Ustvarimo novo tabelo:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); // spustimo obstoječo tabelo mysqli_query ($ link, "DROP TABLE users"); // ustvarite novo tabelo $ query = "USTVARI uporabnike tabele (ime VARCHAR (20), priimek VARCHAR (20), starost TINYINT UNSIGNED)"; if (mysqli_query ($ link, $ query)) echo "Tabela je ustvarjena.
"; else echo" Tabela ni ustvarjena: ". mysqli_error (); // funkcija za dodajanje zapisov v funkcijo tabele add_new_line ($ link, $ query) (if (! mysqli_query ($ link, $ query)) echo" Uporabnik ne dodano: ". mysqli_error ();) // dodaj zapise add_new_line ($ link," INSERT INTO users (ime, priimek, starost) VALUE ("Max", "Jayson", "33") "); add_new_line ($ link , "INSERT INTO users (ime, priimek, starost) VALUE (" Bob "," Freeman "," 26 ")"); add_new_line ($ link, "INSERT INTO users (ime, priimek, starost) VALUE (" Sara " , "Lopes", "65") "); add_new_line ($ link," INSERT INTO users (ime, priimek, starost) VALUE ("Serg", "Pupin", "29") "); add_new_line ($ link, "VSTAVI uporabnike (ime, priimek, starost) VALUE (" Serg "," Borman "," 43 ")"); add_new_line ($ link, "INSERT INTO users (ime, priimek, starost) VALUE (" Max ", "Lopes", "21") "); // prikaže vsebino tabele v brskalniku $ result = mysqli_query ($ link," SELECT * FROM users "); if (! $ Result) echo" Prišlo je do napake: ". Mysqli_error (); else echo" Podatki so prejeti.
"; while ($ row = mysqli_fetch_assoc ($ result)) (echo" Ime: $ row. Priimek: $ row. Starost: $ row. "
";) mysqli_close ($ povezava);

Tako imamo novo, bolj zapleteno tabelo z edinstvenimi zapisi. Zdaj pa poglejmo, koliko imen imamo v bazi podatkov.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); $ result = mysqli_query ($ link, "SELECT DISTINCT name FROM users"); echo "Skupna imena:". mysqli_num_rows ($ rezultat). "
"; echo" Seznam imen:
"; while ($ name = mysqli_fetch_row ($ result)) (odmev" $ name
";) mysqli_close ($ povezava);

Poizvedba SQL "SELECT DISTINCT name FROM users" je vrnila rezultat z vsemi edinstvenimi imeni v naši tabeli. Vsako edinstveno ime v novi vrstici v rezultatu poizvedbe.

Razvrščanje rezultata - NAROČI PO

Z dodajanjem ukaza ORDER BY v poizvedbo SQL razvrstimo rezultat poizvedbe v naraščajočem vrstnem redu (številke in črke po abecedi). Tu je primer, v katerem lahko primerjate običajno poizvedbo in jo razvrstite po starosti (starostno polje).



";) echo" Razvrsti po starosti:
"; $ result = mysqli_query ($ link," SELECT * FROM users ORDER BY age "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Priimek: $ line. Starost: $ vrstica.
";) mysqli_close ($ povezava);

Polje za starost v ukazu ORDER BY lahko zamenjate z imenom in si ogledate rezultat.

Če želite rezultat poizvedbe razvrstiti v obratnem vrstnem redu, uporabite ukaz ORDER BY age DESC.

Ustrezni pogoji - KJE

Z dodajanjem ukaza WHERE v poizvedbo SQL bomo poizvedovali le tiste zapise, ki ustrezajo pogoju. Na primer, vložimo zahtevo za osebe, mlajše od 30 let.

Če želite to narediti, uporabite poizvedbo SQL "SELECT * FROM users WHERE age

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); odmev "Ljudje, mlajši od 30 let:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE starost<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
";) mysqli_close ($ povezava);

Rezultat lahko takoj razvrstimo tudi po naraščajočem vrstnem redu po starosti:
"SELECT * FROM users WHERE starost<30 ORDER BY age ".

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

Poizvedujemo lahko o vrednostih dveh polj: "SELECT ime, starost OD uporabnikov WHERE starost

Zdaj vprašajte vse uporabnike z imenom "Max".

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); odmev "All Max:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name = "Max" "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Priimek: $ line. Starost: $ line.
";) mysqli_close ($ povezava);

In še en primer poizvedbe - izbrala bo le imena iz tabele uporabnikov, vse razen Max.

SELECT name FROM users WHERE name! = "Max"

To je vse s klavzulo WHERE.

Omejevanje rekordov - LIMIT

Z dodajanjem ukaza LIMIT v poizvedbo SQL bomo omejili velikost rezultata.

Poizvedba, ki natisne prve tri zapise: "SELECT * FROM users LIMIT 3". Poglejmo, kako deluje:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); echo "Vsebina tabele:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Priimek: $ line. Starost: $ line.
";) echo"

Prvi trije vnosi:
"; $ result = mysqli_query ($ link," SELECT * FROM users LIMIT 3 "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Priimek: $ line. Starost: $ line .
";) echo"

Drugi trije vnosi:
"; $ result = mysqli_query ($ link," SELECT * FROM users LIMIT 3, 3 "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Priimek: $ line. Starost: $ line ...
";) mysqli_close ($ povezava);

Tudi tukaj smo uporabili poizvedbo: "SELECT * FROM users LIMIT 3, 3". Druga trojka označuje odmik v rezultatu poizvedbe.

Ujemanje vzorcev - LIKE

Jezik SQL podpira preproste vzorce. Za to se uporabi ukaz LIKE, vzorec pa je podan z znakom%.

Tu je primer poizvedbe, ki bo vrnila vse zapise z imeni, ki se začnejo na črko S.

SELECT * FROM users WHERE name LIKE "S%"

Testiranje zahteve:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); echo "Vsebina tabele:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Priimek: $ line. Starost: $ line.
";) echo"

Imena, ki se začnejo s S:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name LIKE "S%" "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Priimek: $ line Starost: $ line.
";) mysqli_close ($ povezava);

Tu je primer poizvedbe, ki bo vrnila vse zapise s priimki, ki se končajo s črko s.

SELECT * FROM users WHERE name LIKE "% s"

Ujemanje pogojev - IN

Ta poizvedba z ukazom IN bo vrnila samo tiste vrstice, ki se strogo ujemajo s pogojem.

Zanimajo nas na primer ljudje, stari 21, 26 in 33 let.

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

Testiranje zahteve:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Napaka"); mysqli_select_db ("tester"); echo "Vsebina tabele:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Ime: $ line. Priimek: $ line. Starost: $ line.
";) echo"

Ljudje z zahtevano starostjo (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. Priimek : $ line. Starost: $ line.
";) mysqli_close ($ povezava);

Največja in najmanjša vrednost v stolpcu

Izbere najvišjo vrednost starosti v tabeli uporabnikov.

SELECT max (starost) OD uporabnikov

Naslednja poizvedba izbere podatke iz uporabniške tabele z uporabo polj imena in starosti, kjer je starost najmanjša vrednost.

SELECT ime, min (starost) OD uporabnikov

Posodabljanje zapisa - UPDATE

Naj Max Lopes postavi starost na 15 let. To se naredi z poizvedbo MySQL:

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

Upoštevajte nov ukaz AND (in - v angleščini pomeni "in") v poizvedbi. Če priimka ne navedemo, bo za vse Max v tabeli določena starost 15 let.

Ena poizvedba lahko posodobi dve ali več polj v eni vrstici. To se naredi na naslednji način:

UPDATE uporabniki SET age = "18", surname = "Cooker" WHERE id = "3"

Naša tabela nima polja id, zato ta poizvedba na njej ne bo delovala. Vsekakor pa se bomo naučili tega polja, ki vsebuje edinstvene številke vrstic.

Izbriši zapis - IZBRIŠI

Poizvedite bazo podatkov MySQL, če želite izbrisati zapis:

IZBRIŠI IZ uporabnikov WHERE id = "10"

Tudi v naši tabeli ni polja id. Iz njega pa lahko odstranimo vse ljudi, mlajše od 18 let.

IZBRIŠI OD uporabnikov, KJE so stari< "18"

DROP MIZA

Poizvedba zbirke podatkov MySQL, ki izbriše celotno tabelo uporabnikov:

DROP TABLE uporabniki

Spuščanje stolpca - ALTER TABLE ... DROP ...

Včasih boste morda morali izbrisati stolpec iz tabele, uporabnikom na primer odstranimo stolpec starosti:

ALTER TABLE uporabniki DROP starost

Ta poizvedba MySQL je trajno in nepreklicno izbrisala stolpec.

Dodaj stolpec - ALTER TABLE ... ADD ...

Včasih bi želeli dodati stolpec v obstoječo tabelo, na primer na primer dodati stolpec starosti v tabelo uporabnikov:

ALTER TABLE users DODAJTE starost TINYINT UNSIGNED

Preimenovanje stolpca - ALTER TABLE ... SPREMEMBA ...

Včasih boste morda morali preimenovati stolpec, na primer preimenovati starostni stolpec v vozrast. To počnemo tako:

ALTER TABLE users SPREMENI starost vozrast TINYINT UNSIGNED

Ta poizvedba MySQL je preimenovala starostni stolpec v vozrast s podatkovnim tipom TINYINT UNSIGNED.

Preimenovanje tabele - PREimenuj tabelo ... V ...

Včasih bo morda treba preimenovati tabelo:

PREimenuj uporabnike tabele ljudem

Spuščanje baze podatkov - DROP DATABASE

Ta poizvedba lahko izpusti bazo podatkov s preizkuševalcem imen:

DROP DATABASE tester

Ustvarjanje baze podatkov - CREATE DATABASE

Ta poizvedba ustvari zbirko podatkov z imenom tester:

CREATE DATABASE tester

Ta zahteva zame deluje v Denverju, na gostovanju pa morda ne bo delovala, če uporabnik baze podatkov nima dovoljenja za izvajanje brisanja.

Rezultati

Tako smo se v tem delu seznanili z poizvedbami v MySQL. Mnoge zahteve, ki smo jih obravnavali, nam med delom ne bodo pogosto koristne, vendar jih morate poznati, saj bodo zagotovo prišli prav pri razvoju skriptov.

Nekatere zahteve so običajno poslane samo iz phpMyAdmin (na primer ustvarjanje in brisanje baz podatkov).

Pri delu spletnih mest morate običajno dodati zapis v tabelo, ga urediti ali izbrisati iz tabele.

Naslednji korak je raziskati podatkovne vrste MySQL.