Počítače Windows Internet

Odosielanie databázových dotazov v PHP. Funkcia Almighty Query - definitívny sprievodca po dotazoch v mysql z php mysqli dopytu

Myslím, že každý už počul o Paretovom pravidle. V akejkoľvek oblasti dáva 20% úsilia 80% výsledku. Napríklad 20% svojho šatníka nosíte 80% času, 20% vašich zákazníkov generuje 80% vášho príjmu. Podobne v Tabuľkách Google môžete pri znalosti 20% existujúcich funkcií vyriešiť 80% všetkých možných problémov.

Query považujem za jednu z najužitočnejších funkcií Tabuliek Google. Ale v pomoci Google je to popísané veľmi povrchne a plná sila tejto funkcie nie je odhalená. Pri bližšom skúmaní je zrejmé, že je schopný nahradiť väčšinu existujúcich funkcií.

Na prácu s QUERY budete potrebovať základné znalosti jazyka SQL. Pre tých, ktorí nevedia, nenechajte sa zastrašiť, funkcia QUERY skutočne podporuje najzákladnejšie funkcie SQL.

QUERY syntax

QUERY (údaje; dotaz; [hlavičky])
  • údaje- je to rozsah buniek, ktoré budú slúžiť ako databáza pre dotaz SQL;
  • vyšetrovanie- text dotazu SQL;
  • titulky Je voliteľný argument, kde môžete určiť, koľko z prvých riadkov poľa obsahuje hlavičky.

Pre maximálne vnímanie ďalších informácií navrhujem otvoriť a skopírovať nasledujúcu tabuľku Google.

V doxe, z ktorého ste práve urobili kópiu, je niekoľko listov. List DB je databáza, ku ktorej budeme mať prístup pomocou funkcie QUERY. Hárky úrovní obsahujú príklady, na ktoré sa pozrieme v tomto článku. Príklad bude s každou novou úrovňou komplikovanejší.

Plán dotazov SQL vo funkcii Dotaz

Akýkoľvek dotaz SQL pozostáva z oddelených blokov, ktoré sa často nazývajú ohováranie. Funkcia SQL for the Query používa syntax jazyka Google Visualization API Query Language, ktorá podporuje nasledujúce sklzy:

  • vyberte- výpočet polí, ktoré budú vrátené žiadosťou;
  • kde- obsahuje zoznam podmienok, za ktorých sa bude filtrovať dátové pole spracované požiadavkou;
  • zoskupiť podľa- obsahuje zoznam polí, podľa ktorých chcete zoskupiť výsledok;
  • pivot- Pomáha vytvárať kontingenčné tabuľky pomocou hodnoty jedného stĺpca ako názvov stĺpcov konečnej tabuľky;
  • zoradiť podľa- zodpovedá za triedenie výsledkov;
  • limit- pomocou tejto časti dotazu môžete nastaviť obmedzenie počtu riadkov vrátených dopytom;
  • ofset- pomocou tohto ohovárania môžete nastaviť počet prvých riadkov, ktoré by dopyt nemal spracovať;
  • štítok- tento ohovárač je zodpovedný za názov polí vrátených dotazom;
  • formát- zodpovedá za formát výstupných údajov;
  • možnosti - umožňuje nastaviť ďalšie parametre pre výstup údajov.

Funkcia Hello World for Query (Select)

Prejdeme na hárok Level_1 a pozrieme sa na vzorec v bunke A1.

Dopyt (DB! A1: L1143; "vyberte * limit 100")

Časť vzorca " DB! A1: L1143 " zodpovedný za databázu, z ktorej urobíme výber. Druhá časť " vyberte * limit 100„Obsahuje text samotnej žiadosti. „*“ V tomto prípade znamená vrátenie všetkých polí obsiahnutých v databáze. Používaním " limit 100»Obmedzíme výstup na maximálne 100 riadkov. Toto je príklad najjednoduchšieho dotazu. Vybrali sme prvých 100 riadkov z databázy. Toto je akýsi „Hello world“ pre funkciu Query.

Použitie filtrov a zoradenie (kde, zoradiť podľa)

Prejdite na list úrovne_2. Vyberieme iba niektoré z polí, ktoré potrebujeme, a nastavíme podmienky filtrovania a triedenia. Údaje napríklad používame iba pre kampane Campaign_1 a Campaign_2 za obdobie od 22. do 25. októbra 2015. Zoradíme ich zostupne podľa súčtu relácií. Na filtrovanie a triedenie musíte do textu požiadavky pridať opis ohovárania Kde a objednať... Na výstup vyššie popísaného príkladu do výsledkovej tabuľky potrebujeme polia Kampaň, Dátum a Relácie. Práve oni musia byť uvedení v ohováraní. Vyberte.

Odkaz na polia databázy sa vykonáva prostredníctvom názvov stĺpcov pracovného hárka, na ktorých je databáza umiestnená.

V našom prípade sú údaje umiestnené na hárku DB a odkazujúce na určité polia zapísané ako názov stĺpcov listu. Požadované polia sa teda nachádzajú v nasledujúcich stĺpcoch:

  • lúka Dátum- stĺpec A;
  • lúka Kampaň- stĺpec B;
  • lúka Relácie- stĺpec G.

V súlade s tým bude časť dotazu, ktorá je zodpovedná za zoznam výstupných údajov, vyzerať takto:

Vyberte A, B, G.

Ďalej v žiadosti je ohováranie Kde... Pri písaní žiadosti musí byť ohováranie zaradené v poradí, v akom bolo popísané v prvej časti tohto článku. Po vyhlásení Kde musíme uviesť podmienky filtrovania. V takom prípade údaje filtrujeme podľa názvu kampane (kampaň) a dátumu (dátumu). Používame niekoľko podmienok filtrovania. V texte dotazu musí byť medzi všetkými podmienkami logický operátor OR alebo AND. Filtrovanie podľa dátumov sa mierne líši od filtrovania podľa číselných a textových hodnôt, na jeho použitie musíte použiť operátor Dátum. Časť žiadosti, ktorá je zodpovedná za filtrovanie údajov, bude vyzerať takto:

KDE (A> = dátum „2015-10-22“ A A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")

Filtrovanie údajov pomocou zátvoriek sme rozdelili na dve logické časti: prvá filtruje podľa dátumov, druhá - podľa názvu kampane. V tejto fáze vzorec opisujúci údaje, ktoré sa majú vybrať, a podmienky filtrovania údajov, vyzerá takto:

Dopyt (DB! A1: L1143; "Vyberte A, B, G KDE (A> = dátum" 2015-10-22 "A A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")")

Môžete ho skopírovať a prilepiť napríklad na nový list dokumentu, ktorý sa v tomto príspevku používa ako príklad, a získate nasledujúci výsledok:

Okrem bežných logických operátorov (=,<, >) klauzula WHERE podporuje ďalšie operátory filtrovania:

  • obsahuje- kontroluje obsah určitých znakov v reťazci. Napríklad KDE A obsahuje „John“ vráti do filtra všetky hodnoty zo stĺpca A, ktoré obsahujú John, napríklad John Adams, Long John Silver;
  • začína s- filtruje hodnoty podľa predpony, to znamená kontroluje znaky na začiatku riadka. Začína sa napríklad na „en“, čím sa vráti inžinierstvo a angličtina;
  • končí na- filtruje hodnoty na konci riadka. Napríklad riadok „Kovboj „Bude vrátené s“ končí na „chlapec“ alebo „končí na“ y ”“;
  • zápasy- zhoduje sa s regulárnym výrazom. Napríklad: kde zápasy ‘. * Ia ‘Vráti hodnoty Indie a Nigérie.
  • Páči sa mi to - zjednodušená verzia regulárnych výrazov kontroluje, či sa reťazec zhoduje s daným výrazom pomocou zástupných znakov. V súčasnosti like podporuje dva zástupné znaky: „%“ znamená ľubovoľný počet ľubovoľných znakov v reťazci a „_“ znamená ľubovoľný jeden znak. Napríklad „kde názov ako‘ fre% ’“ bude zodpovedať riadkom „Voľne ’, „Fred “, A„ Freddy ’.

Žiadosť už filtrovala údaje za určité obdobie a ponechala iba kampane, ktoré potrebujeme. Zostáva iba zoradiť výsledok zostupne v závislosti od počtu relácií. Zoradenie v týchto dotazoch sa vykonáva tradične pre SQL pomocou ohovárania Zoradiť podľa... Syntax je pomerne jednoduchá: stačí len uviesť polia, podľa ktorých chcete zoradiť výsledok, a tiež určiť poradie zoradenia. Predvolené je vzostupné poradie, to znamená vzostupné. Ak zadáte parameter desc za názvom poľa, dotaz vráti výsledok v zostupnom poradí podľa lomky Zoradiť podľa polia.

V našom prípade bude za filtrovanie zodpovedný riadok v texte žiadosti:

Objednávka podľa G desc

Podľa toho konečný výsledok vzorca na hárku úrovne_2, ktorý rieši problém, ktorý potrebujeme, vyzerá takto:

Dopyt (DB! A1: L1143; "VYBERTE A, B, G KDE (A> = dátum" 2015-10-22 "A A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2") ORDER BY G DESC")

Teraz môžete údaje filtrovať a triediť pomocou najjednoduchšej syntaxe SQL a funkcie QUERY.

".
Chlapci z moskovskej kancelárie možno nemajú čas, takže bude k dispozícii bezplatný preklad Query Language Reference (verzia 0.7).
Google Visualization API. Query Language (Verzia 0.7)
Dotazovací jazyk rozhrania Google Visualization API vám umožňuje manipulovať s údajmi dopytovaním zdroja údajov.

Na vizualizáciu zvyčajne potrebujete poskytnúť údaje v určitej konkrétnej forme. Koláčový graf napríklad vyžaduje dva stĺpce: textový štítok a číselnú hodnotu. Zdroj údajov však nemusí zodpovedať tejto štruktúre. Môže obsahovať viac stĺpcov alebo sa ich poradie bude líšiť od toho, čo je požadované pre diagram.
Dotazovací jazyk nám umožňuje štruktúrovať údaje spôsobom, ktorý potrebujeme na dosiahnutie výsledku.
Syntax jazyka dotazov je podobná SQL. Tí, ktorí ovládajú používanie jazyka SQL, budú schopní rýchlo ovládať jazyk dopytov. Sekcia syntaxe identifikuje rozdiely v týchto jazykoch.
Všimnite si toho, že nie je vždy potrebné použiť renderovací jazyk. Na používanie je potrebná základňa. K obsahu.

Použitie dotazovacieho jazyka

Reťazec dotazu môžete do zdroja údajov pridať dvoma spôsobmi: z kódu JavaScript alebo ako parameter do odkazu na zdroj údajov. Ak váš odkaz neobsahuje žiadne parametre dopytu, predvolene sa vráti celý súbor údajov. Túto množinu môžete zmeniť úpravou dotazu na samotný zdroj údajov.

Ak v Tabuľkách Google používate funkciu QUERY, môžete ďalšie kroky preskočiť a prejsť na ďalšiu časť.

Nastavenie požiadavky z JavaScriptu

Ak chcete nastaviť reťazec dotazu z kódu JavaScript, musíte túto metódu zavolať setQuery google.visualization.Trieda dotazu.
var query = new google.visualization.Query (DATA_SOURCE_URL);
query.setQuery ("vyberte odd., súčet (plat) skupinu podľa odboru");
query.send (handleQueryResponse);

Reťazec dotazu do zdroja údajov je možné pridať pomocou parametra tq... Je teda možné použiť vizualizácie, ktoré napísali iní vývojári, jednoducho úpravou ich množiny údajov.
Reťazec dopytu musí byť správne kódovaný adresou URL. Môžete použiť funkciu JavaScript encodeURIComponent na kódovanie alebo to urobte ručne pomocou nástroja na konci sekcie.
Príklad
Zvážte príklad dotazu pre Tabuľky Google (Pamätajte si, že identifikátory stĺpcov sú vždy písmená. Názvy stĺpcov nie sú pri publikovaní identifikátormi. V dopyte je potrebné použiť identifikátory stĺpcov)
Po kódovaní bude žiadosť vyzerať takto:
vyberte% 20A% 2C% 20sum (B)% 20skupina% 20by% 20A
Predpokladajme, že adresa v tabuľke údajov je nasledovná:
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE
Pridajte parameter požiadavky & tq = VAŠE_QUERY_STRING na odkaz na tabuľku a získajte pripravený reťazec dotazov
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE&tq=select%A%2C%20sum(B)%20group%20by%20A

Syntax jazyka

Prehľad

Môj dotazovací jazyk je veľmi podobný jazyku SQL. Existuje však niekoľko špecifík, ktoré je potrebné vziať do úvahy.
Tabuľka údajov
Tento dokument obsahuje výraz „Tabuľka údajov“, ktorý má odkazovať na výsledky dotazu. Tabuľka sa skladá z riadkov a stĺpcov. Každý stĺpec má nasledujúce vlastnosti:
  • ID (alebo ID stĺpca)... Používa sa na označenie stĺpcov tabuľky. Upozorňujeme, že na stĺpec musíte odkazovať iba podľa identifikátora. Trik: snažte sa nepoužívať medzery v identifikátoroch, môže to spôsobiť problémy pri úprave požiadavky. Okrem toho musia byť všetky identifikátory s medzerami uzavreté v zátkach.
  • Štítok... Toto je reťazec, ktorý sa zvyčajne zobrazuje koncovým používateľom. Napríklad legenda v koláčovom grafe alebo názov tabuľkového grafu. Nevzťahuje sa na funkciu QUERY () v Tabuľkách Google.
  • Dátové typy... Podporované sú nasledujúce typy údajov: reťazec, číslo, logická hodnota, dátum (dátum), dátum a čas (dátum a čas), čas (časový deň). Všetky hodnoty v stĺpci budú mať údajový typ alebo null. Tieto typy údajov sú veľmi podobné typom JavaScriptu, nie sú totožné. Tieto sú popísané v časti Literály.
  • Šablóny formátovania... Dátové tabuľky môžu podporovať vzory formátovania pre všetky alebo niektoré stĺpce. Sú popísané v časti Formátovanie.
Tabuľka údajov použitá vo všetkých príkladoch
V tomto dokumente príklady používajú tabuľku s nasledujúcimi typmi údajov a stĺpcov:
názov
reťazec
dlh
reťazec
obed
čas dňa

Plat
číslo

dátum nájmu
dátum
Vek
číslo
je starší
booleovský
seniorityStartTime
Dátum Čas
John Ing 12:00:00 2005-03-19 35 pravda 2007-12-02 15:56:00
Dave Ing 12:00:00 2006-04-19 27 falošný nulový
Sally Ing 13:00:00 2005-10-10 30 falošný nulový
Ben Predaj 12:00:00 2002-10-10 32 pravda 2005-03-09 12:30:00
Dana Predaj 12:00:00 2004-09-08 25 falošný nulový
Mike Marketing 13:00:00 2005-01-10 24 pravda 2007-12-30 14:40:00

Jazykoví operátori

Dotazovací jazyk pozostáva z nasledujúcich operátorov pozostávajúcich z jedného alebo dvoch slov. Operátori sa musia navzájom riadiť v poradí uvedenom v tabuľke:
Operátor Použitie
vyberte Vyberá, ktoré stĺpce a v akom poradí budú vrátené. Ak je operátor vynechaný, vrátia sa všetky stĺpce tabuľky.
Vráti iba tie riadky tabuľky, ktoré vyhovujú podmienke. Ak je operátor vynechaný, vrátia sa všetky riadky v tabuľke.
zoskupiť podľa Zoskupuje hodnoty podľa riadkov.
pivot Konvertuje jedinečné hodnoty v stĺpcoch na nové stĺpce, podobne ako v kontingenčnej tabuľke.
zoradiť podľa Zoradí reťazce podľa hodnôt.
limit Nastavuje limit riadkov, ktoré budú vrátené.
ofset Preskočí zadaný počet riadkov z výstupu.
štítok Nastavuje štítky stĺpcov.
formát Formátuje hodnoty v zadaných stĺpcoch podľa vzorov formátovania.
možnosti Nastavuje ďalšie parametre.
od Operátor from sa nepoužíva.
Vyberte
Príkaz select určuje, ktoré stĺpce sa majú vrátiť a v akom poradí. Ak nie je zadaný žiadny operátor alebo je zvolené *, budú všetky stĺpce tabuľky vrátené v pôvodnom poradí. Na stĺpce je možné odkazovať prostredníctvom identifikátorov, ale nie prostredníctvom štítkov. Identifikátormi v Tabuľkách Google sú názvy stĺpcov s jedným alebo dvoma písmenami (A, B, C, ..., AC, ..., DC, ...).
Parametre operátora môžu byť identifikátory stĺpcov, agregačné funkcie, skalárne funkcie alebo aritmetické operátory.
Príklady:
vyberte *
vyberte odd., plat
vyberte maximum (plat)
emailová adresadátum):

Dostávame výsledok:
obed názov
12:00:00 John
12:00:00 Dave
13:00:00 Sally
12:00:00 Ben
12:00:00 Dana
13:00:00 Mike
Klauzula where sa používa na vrátenie iba tých riadkov, ktoré zodpovedajú podmienkam.
Na opis podmienok sa používajú jednoduché porovnávacie operátory<=, <, >, >=, =, !=, <>... Obaja operátori! =,<>priemer nerovná sa... Reťazce sa porovnávajú podľa ich lexikografického významu. Rovnosť sa kontroluje pomocou operátora =, a nie pomocou ==, ako je to v mnohých jazykoch... Porovnanie s hodnotou null sa vykonáva prostredníctvom parametra null a nie je nulová. Pri použití QUERY () v Tabuľkách Google je bežné, že pole reťazca je prázdne „“, nie null.
Môžete kombinovať viacero podmienok pomocou boolovských operátorov a alebo nie. Na definovanie explicitnej prednosti sa používajú zátvorky.

Klauzula where tiež používa ďalšie operátory na komplexnejšie porovnania reťazcov. Tieto operátory preberajú dva argumenty, ktoré musia byť reťazce. Akýkoľvek argument bez reťazca (dátum, číslo) sa pred porovnaním skonvertuje na reťazec. Porovnanie rozlišuje veľké a malé písmená (na vyhladenie tejto funkcie použite skalárne funkcie upper (), lower ()).
obsahuje - zodpovedá podreťazcu. Výraz sa vráti na hodnotu true, ak sa časť reťazca úplne zhoduje s daným argumentom - podreťazcom. Napríklad tam, kde meno obsahuje „John“, sa vráti „John“, „John Adams“, „Long John Silver“ ale nie "john adams".

Príklady:
vyberte *
vyberte odd., plat
vyberte maximum (plat)
Nasledujúci príklad ukazuje použitie referenčných identifikátorov s medzerami ( emailová adresa) a identifikátory, ktoré sa zhodujú s názvami vyhradených slov ( dátum):
zvoľte `emailová adresa`, meno,` dátum`
Na tabuľku z príkladu použijeme nasledujúci dotaz:
Dostávame výsledok:
obed názov
12:00:00 John
12:00:00 Dave
13:00:00 Sally
12:00:00 Ben
12:00:00 Dana
13:00:00 Mike
zdroj mysql_query(reťazcový dopyt [, identifikátor odkazu na zdroj]])

mysql_query () odošle požiadavku do aktívnej databázy servera, na ktorú odkazuje odovzdaný ukazovateľ. Ak odkaz_identifikátor vynecháte, použije sa posledné otvorené pripojenie. Ak nie sú k dispozícii žiadne otvorené pripojenia, funkcia sa pokúsi pripojiť k systému DBMS, podobne ako táto funkcia mysql_connect ()žiadne parametre. Výsledok dotazu je uložený vo vyrovnávacej pamäti.

Komentár: Reťazec dotazu NESMIE končiť bodkočiarkou.

Len pre dopyty SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query () vráti ukazovateľ na výsledok dotazu, alebo NEPRAVDA ak žiadosť nebola dokončená.
V ostatných prípadoch (VLOŽIŤ, AKTUALIZOVAŤ, ODSTRÁNIŤ, DROP atď.), mysql_query () vracia PRAVDA v prípade úspešnej žiadosti a NEPRAVDA v prípade chyby. Hodnota nie je rovnaká NEPRAVDA znamená, že žiadosť bola úspešne dokončená. Nehovorí o počte postihnutých alebo vrátených riadkov. Je celkom možné, že úspešná požiadavka neovplyvní žiadny riadok.

Nasledujúci dotaz je nesprávny a mysql_query () vráti sa NEPRAVDA :

mysql_query () je tiež považovaný za chybný a vráti sa NEPRAVDA ak nemáte dostatočné práva na prácu s tabuľkou uvedenou v dotaze.

Pri práci s výsledkami dotazov môžete použiť funkciu mysql_num_rows () na nájdenie čísla vráteného dotazom SELECT, riadkami alebo mysql_affected_rows () nájsť počet riadkov spracovaných dotazmi DELETE, INSERT, REPLACE alebo UPDATE.

Funkcia iba pre dopyty SELECT, SHOW, DESCRIBE, EXPLAIN mysql_query () vráti ukazovateľ na výsledok, ktorý je možné použiť vo funkcii mysql_fetch_array () a ďalšie funkcie, ktoré pracujú s výsledkami dotazov. Keď prácu s výsledkom dokončíte, môžete pomocou funkcie uvoľniť prostriedky použité na jeho uloženie

Poznámka: Nadstavba Power Query ponúkané v Exceli 2016 ako skupina príkazov Stiahnuť a previesť... Informácie v tomto článku sa vzťahujú na Power Query aj na novú skupinu. Ďalšie informácie nájdete v téme Stiahnutie a prevod v programe Excel 2016.

V Power Query operácia Pridať vytvorí nový dotaz obsahujúci všetky riadky z prvého dotazu a potom všetky riadky z druhého dotazu.

Bezpečnostné upozornenie: Úrovne súkromia zabrániť náhodnému zhromažďovaniu údajov z viacerých zdrojov, ktoré môžu byť súkromné ​​alebo organizačné. Pri niektorých dotazoch môže používateľ neúmyselne odoslať údaje zo súkromného zdroja údajov do iného zdroja. Útočníci môžu využiť túto príležitosť. Power Query analyzuje každý zdroj údajov a určuje jeho úroveň ochrany osobných údajov: verejnú, organizačnú a súkromnú. Ďalšie informácie o úrovniach ochrany osobných údajov nájdete v časti Úrovne ochrany osobných údajov.

Prebieha pridávanie

Môžete vykonať dva typy operácií pridania: medziprodukt alebo vložená príloha... Použitím medziprodukt pre každú operáciu pridania sa vytvorí nový dotaz. O vložená príloha pridávate údaje k existujúcemu dopytu, kým nedosiahnete konečný výsledok. Výsledkom je nový krok na konci aktuálneho dopytu.

Inline add

Stredné pridanie


Pozri tiež:

Poznámka: Dotazový editor sa zobrazuje iba pri načítaní, úprave alebo vytváraní novej požiadavky pomocou Power Query... Video zobrazuje okno editor dotazov to sa zobrazí, keď zmeníte dotaz v zošite programu Excel. Zobraziť editor dotazov bez sťahovania alebo úpravy existujúceho dotazu v zošite, v sekcii Získavanie externých údajov na karte pásky Power Query vyber si Z iných zdrojov> Prázdny dotaz... Video zobrazuje jednu zo spôsobov zobrazenia editor dotazov.

Naučili sme sa, ako sa pripojiť k serveru MySQL, zvoliť si databázu, s ktorou budeme pracovať, naučili sme sa funkciu PHP pri odosielaní dotazov na server MySQL, naučili sme sa dva jednoduché dotazy (vytváranie a odstraňovanie tabuľky) a naučili sme sa, ako ukončiť pripojenie.

Teraz sa ponoríme hlbšie do dopytov MySQL. Začnime teda!

Vytvorenie tabuľky - VYTVORIŤ TABUĽKU

Teraz máme prázdnu databázu, neexistujú v nej žiadne tabuľky. Poďme si teda najskôr vytvoriť tabuľku. Už od prvej časti vieme, ako to urobiť.

Tu je kód skriptu, ktorý vytvorí platňu, ktorú potrebujeme:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Chyba"); $ query = "VYTVORIŤ TABUĽKOVÝCH užívateľov (prihlasovací VARCHAR (20), heslo VARCHAR (20))"; if (mysqli_query ($ link, $ query)) echo „Tabuľka bola vytvorená.“; else echo "Tabuľka nebola vytvorená:" .mysqli_error (); mysqli_close ($ link);

V našej tabuľke sú iba dve polia: prihlasovacie meno a heslo. Zatiaľ viac nepotrebujeme, nekomplikujme si postup.

Tabuľka bola vytvorená.

Pridávanie riadkov (záznamov) do tabuľky - VLOŽIŤ

Nový riadok môžete pridať do tabuľky pomocou príkazu vložiť SQL. Tu je príklad:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Chyba"); $ query = "VLOŽIŤ DO UŽÍVATEĽOV (prihlasovacie meno, heslo) HODNOTA (" zeus "," pass123 ")"; if (mysqli_query ($ link, $ query)) echo "Používateľ bol pridaný."; else echo "Nie je pridaný žiadny používateľ:". mysqli_error (); mysqli_close ($ link);

Dotaz SQL pozostáva z príkazu INSERT INTO, názvu databázy užívateľov, potom názvov polí v zátvorkách, potom slova VALUE a následných pridaných hodnôt v zátvorkách. Hodnoty sú uvedené.

Syntax žiadosti vyzerá takto:

VLOŽIŤ DO NÁZOV tabuľky (stĺpček1, stĺpček2) HODNOTA ("x1", "x2")

Úvodzovky v druhých zátvorkách sú povinné.

Namiesto hodnôt môžu byť premenné. Tu je príklad:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Chyba"); $ login = "zeus"; $ heslo = "pass123"; $ query = "VLOŽIŤ DO UŽÍVATEĽOV (prihlasovacie meno, heslo) HODNOTA (" $ prihlásenie "," $ heslo ")"; if (mysqli_query ($ link, $ query)) echo „Používateľ bol pridaný.“; else echo "Nie je pridaný žiadny používateľ:". mysqli_error (); mysqli_close ($ link);

Tento príklad samozrejme nemá veľký zmysel. Pre začiatočníkov môže byť užitočné počuť, že takto sa do databázy zaznamenávajú prihlasovacie údaje a heslá, ktoré používatelia uvádzajú pri registrácii. Tieto údaje sú uložené v premenných a potom sú po kontrole zapísané do databázy.

Existuje jeden rýchly spôsob, ako vložiť viac riadkov do jedného dotazu INSERT:

VLOŽIŤ DO UŽÍVATEĽOV (prihlasovacie meno, heslo) HODNOTA („bob“, „eee333“), („Rooki“, „12345“), („magy“, „olol88e8“)

Ako vidíte, vymenované údaje sú jednoducho oddelené čiarkami.

Pomocou príkazu INSERT sme sa teda naučili, ako pridať záznamy do tabuľky. Pohni sa.

Zobrazenie tabuľky: príkaz SELECT

Teraz máme tabuľku používateľov, ktorá obsahuje riadky. Predchádzajúci skript je možné spustiť viackrát a pri každom pridaní riadka do tabuľky. Teraz možno nevieme, koľko riadkov máme v tabuľke. A chcem vedieť, čo sme v ňom napísali.

Na získanie údajov z tabuľky použite príkaz SQL SELECT. Znak * znamená, že požadujeme všetky údaje, potom za slovo OD napíšeme názov tabuľky, z ktorej chceme prijímať údaje.

Vyžiadajme si všetky údaje z tabuľky používateľov:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Chyba"); $ query = "VYBRAŤ * OD používateľov"; $ result = mysqli_query ($ link, $ query); if (! $ result) echo "Vyskytla sa chyba:". mysqli_error (); else echo „Údaje prijaté“; mysqli_close ($ link);

Funkcia mysqli_query () nám vrátila identifikátor výsledku dotazu - vložíme ho do premennej a v budúcnosti s ním budeme pracovať pomocou ďalších funkcií PHP.

Počet záznamov v žiadosti

Zistíme, koľko riadkov obsahuje náš dotaz? Sám som spustil skript na pridanie záznamu do tabuľky, nepamätám si, koľkokrát, a teraz neviem, koľko riadkov je v mojej tabuľke.

Na určenie počtu riadkov vo výsledku dotazu sa používa funkcia mysqli_num_rows (). Tejto funkcii je odovzdaný identifikátor výsledku dotazu a vráti počet záznamov.

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Chyba"); $ query = "VYBRAŤ * OD používateľov"; $ result = mysqli_query ($ link, $ query); if (! $ result) echo "Vyskytla sa chyba:". mysqli_error (); else echo „Údaje prijaté“; $ count = mysqli_num_rows ($ výsledok); echo "Celkový počet riadkov v tabuľke: $ count."; mysqli_close ($ link);

Ak potrebujeme zistiť počet záznamov v tabuľke, daná metóda nie je najvhodnejšia. Tu sme zistili počet záznamov nájdených v dotaze, ale počet záznamov v tabuľke sa vyhľadáva odlišne.

Počet záznamov v tabuľke VYBERTE POČET (*)

Ak chcete zistiť počet záznamov v tabuľke, môžete použiť príkaz SELECT COUNT (*) FROM table_name.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); $ query = "VYBRAŤ * OD používateľov"; $ result = mysqli_query ($ link, $ query); if (! $ result) echo "Vyskytla sa chyba:". mysqli_error (); else echo „Údaje prijaté.“; $ count = mysqli_fetch_row ($ výsledok); echo "Celkový počet riadkov v tabuľke: $ count."; mysqli_close ($ link);

Všimnite si toho, že sme tu na načítanie údajov použili novú funkciu PHP mysqli_fetch_row (). Táto funkcia vracia riadok výsledku dotazu vo forme jednoduchého poľa, v našom prípade je v riadku jedno pole a má index 0.

Zobrazenie výsledku dotazu v slučke

Po spustení dotazu SQL príkazom SELECT a získaní identifikátora výsledku dotazu PHP vytvorí interný ukazovateľ v sade záznamov výsledkov. Tento ukazovateľ sa automaticky presunie na nasledujúci záznam po odkazovaní na aktuálny záznam. Tento mechanizmus veľmi uľahčuje opakovanie sady výsledkov dotazu SELECT.

PHP má niekoľko funkcií, ktoré je možné použiť na získanie poľa pozostávajúceho z jeho polí pre každý riadok výsledného dotazu. Zoberme si ako príklad funkciu mysqli_fetch_row (). Tejto funkcii sa odovzdá ID žiadosti a vráti pole. V slučke sa teda naskenuje celý výsledok dotazu; po dosiahnutí konca výsledku dotazu funkcia vráti hodnotu false.

Dotazujeme sa teda na všetky údaje z tabuľky používateľov (SELECT * FROM users).


"; while ($ row = mysqli_fetch_row ($ result)) (echo" Prihlásenie: $ riadok. Heslo: $ riadok.
";) mysqli_close ($ link);

Mysqli_fetch_row () vráti jednoduché pole. V každej iterácii cyklu dostaneme z tabuľky pole s riadkom, do ktorého polí môžeme vstúpiť zadaním číselného indexu.

To isté sa dá urobiť pomocou funkcie mysql_fetch_assoc (), ktorá vráti asociatívne pole.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); $ result = mysqli_query ($ link, „SELECT * FROM users“); if (! $ result) echo "Vyskytla sa chyba:". mysqli_error (); else echo "Údaje prijaté.
"; while ($ row = mysqli_fetch_assoc ($ result)) (echo" Prihlásenie: $ riadok. Heslo: $ riadok.
";) mysqli_close ($ link);

Existujú aj funkcie mysqli_fetch_array () - vracia akýkoľvek typ poľa a mysqli_fetch_object () - vracia objekt.

VYBERTE dotaz DISTINCT - jedinečné hodnoty poľa

Vytvoríme novú tabuľku:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); // zrušenie existujúcej tabuľky mysqli_query ($ link, „DROP TABLE users“); // vytvorenie novej tabuľky $ query = "VYTVORIŤ TABUĽKOVÝCH užívateľov (meno VARCHAR (20), priezvisko VARCHAR (20), vek TINYINT UNSIGNED)"; if (mysqli_query ($ link, $ query)) echo „Tabuľka bola vytvorená.
"; else echo" Tabuľka nebola vytvorená: ". mysqli_error (); // funkcia na pridávanie záznamov do funkcie tabuľky add_new_line ($ link, $ query) (if (! mysqli_query ($ link, $ query)) echo" Používateľ nie pridané: ". mysqli_error ();) // pridanie záznamov add_new_line ($ link," INSERT INTO users (meno, priezvisko, vek) VALUE ("Max", "Jayson", "33") "); add_new_line ($ link , „VLOŽTE INTO užívateľov (meno, priezvisko, vek) VALUE („ Bob “,„ Freeman “,„ 26 “)“); add_new_line ($ link, „INSERT INTO users (meno, priezvisko, vek) VALUE („ Sara “ , "Lopes", "65") "); add_new_line ($ link," INSERT INTO users (name, priezvisko, vek) VALUE ("Serg", "Pupin", "29") "); add_new_line ($ link, „INSERT INTO users (name, surname, age) VALUE (" Serg "," Borman "," 43 ")"); add_new_line ($ link, "INSERT INTO users (name, surname, age) VALUE (" Max ", "Lopes", "21") "); // zobrazí obsah tabuľky v prehliadači $ result = mysqli_query ($ link," SELECT * FROM users "); if (! $ Result) echo" Došlo k chybe: ". Mysqli_error (); else echo" Prijaté údaje.
"; while ($ row = mysqli_fetch_assoc ($ result)) (echo" Meno: $ riadok. Priezvisko: $ riadok. Vek: $ riadok.
";) mysqli_close ($ link);

Máme teda novú, komplexnejšiu tabuľku s unikátnymi záznamami. Teraz sa pozrime, koľko mien máme v databáze.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); $ result = mysqli_query ($ link, „VYBRAŤ ROZDIELOVÝ názov od užívateľov“); echo „Celkové mená:“. mysqli_num_rows ($ result). "
"; echo" Zoznam mien:
"; while ($ name = mysqli_fetch_row ($ result)) (echo" $ name
";) mysqli_close ($ link);

Dotaz SQL „VYBRAŤ DISTINKT názov od používateľov“ vrátil výsledok so všetkými jedinečnými názvami v našej tabuľke. Každý jedinečný názov na novom riadku vo výsledku dotazu.

Zoradenie výsledku - OBJEDNAJTE PODĽA

Pridaním príkazu ORDER BY do dotazu SQL zoraďujeme výsledok dotazu vzostupne (čísla a písmena podľa abecedy). Tu je príklad, kde môžete porovnať bežný dotaz a zoradiť ho podľa veku (vekové pole).



";) echo" Zoradiť podľa veku:
"; $ result = mysqli_query ($ link," SELECT * FROM users ORDER BY age "); while ($ line = mysqli_fetch_row ($ result)) (echo" First name: $ line. Last name: $ line. Age: $ riadok.
";) mysqli_close ($ link);

Pole veku v príkaze ORDER BY môžete nahradiť poľom názvu a uvidíte výsledok.

Ak chcete výsledok dotazu zoradiť v opačnom poradí, použite príkaz ORDER BY age DESC.

Zodpovedajúca podmienka - KDE

Pridaním príkazu WHERE do dotazu SQL budeme dotazovať iba tie záznamy, ktoré vyhovujú podmienke. Napríklad urobme žiadosť pre ľudí mladších ako 30 rokov.

Ak to chcete urobiť, použite dotaz SQL „VYBERTE * OD používateľov, KDE JE vek

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); echo „Ľudia do 30 rokov:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE age<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
";) mysqli_close ($ link);

Výsledok môžeme tiež okamžite zoradiť vzostupne podľa veku:
„VYBERTE * OD používateľov, KDE JE vek<30 ORDER BY age ".

Ak zadáme dotaz „VYBRAŤ meno od používateľov KDE je vek<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

Môžeme sa opýtať na hodnoty dvoch polí: „VYBERTE meno, vek OD užívateľov KDE vek

Teraz požiadajte všetkých používateľov s názvom „Max“.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); echo „All Max:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name = "Max" "); while ($ line = mysqli_fetch_row ($ result)) (echo" First name: $ line. Last name: $ line. Vek: $ riadok.
";) mysqli_close ($ link);

A ďalší príklad dotazu - vyberie iba mená z tabuľky používateľov, všetko okrem Max.

VYBERTE meno od užívateľov KDE meno! = "Max"

To je všetko s klauzulou WHERE.

Obmedzujúce záznamy - LIMIT

Pridaním príkazu LIMIT do dotazu SQL obmedzíme veľkosť výsledku.

Dotaz, ktorý vytlačí prvé tri záznamy: „SELECT * FROM users LIMIT 3“. Pozrime sa, ako to funguje:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); echo "Obsah tabuľky:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Meno: $ riadok. Priezvisko: $ riadok. Vek: $ riadok.
";) ozvena"

Prvé tri záznamy:
"; $ result = mysqli_query ($ link," SELECT * FROM users LIMIT 3 "); while ($ line = mysqli_fetch_row ($ result)) (echo" First name: $ line. Last name: $ line. Age: $ line .
";) ozvena"

Druhé tri záznamy:
"; $ result = mysqli_query ($ link," SELECT * FROM users LIMIT 3, 3 "); while ($ line = mysqli_fetch_row ($ result)) (echo" First name: $ line. Last name: $ line. Age: $ riadok ...
";) mysqli_close ($ link);

Aj tu sme použili dotaz: „VYBERTE * OD používateľov LIMIT 3, 3“. Druhá trojka označuje posun vo výsledku dotazu.

Zhoda vzorov - LIKE

Jazyk SQL podporuje jednoduché vzory. Na tento účel sa používa príkaz LIKE a vzor sa zadá pomocou znaku%.

Tu je príklad dotazu, ktorý vráti všetky záznamy s menami začínajúcimi na písmeno S.

VYBERTE * OD používateľov, KDE JE NÁZOV LIKE „S%“

Testovanie žiadosti:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); echo "Obsah tabuľky:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Meno: $ riadok. Priezvisko: $ riadok. Vek: $ riadok.
";) ozvena"

Mená začínajúce na S:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name LIKE "S%" "); while ($ line = mysqli_fetch_row ($ result)) (echo" First name: $ line. Last name: $ line Vek: $ riadok.
";) mysqli_close ($ link);

Tu je príklad dotazu, ktorý vráti všetky záznamy s priezviskami končiacimi na písmeno s.

VYBRAŤ * OD POUŽÍVATEĽOV KDE NÁZOV LIKE "% s"

Podmienka zodpovedajúca - IN

Tento dotaz pomocou príkazu IN vráti iba tie riadky, ktoré striktne zodpovedajú podmienke.

Máme napríklad záujem o ľudí vo veku 21, 26 a 33 rokov.

VYBERTE * OD používateľov, KDE JE vek IN (21,26,33)

Testovanie žiadosti:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Chyba"); mysqli_select_db ("tester"); echo "Obsah tabuľky:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" Meno: $ riadok. Priezvisko: $ riadok. Vek: $ riadok.
";) ozvena"

Ľudia s požadovaným vekom (21, 26, 33):
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE age IN (21, 26, 33) "); while ($ line = mysqli_fetch_row ($ result)) (echo" First name: $ line. Last name : $ line. Vek: $ line.
";) mysqli_close ($ link);

Maximálna a minimálna hodnota v stĺpci

Vyberie maximálnu hodnotu veku v tabuľke používateľov.

VYBERTE maximum (vek) OD používateľov

Nasledujúci dotaz vyberá údaje z tabuľky používateľov pomocou polí pre meno a vek, kde vek je minimálna hodnota.

VYBERTE meno, min. (Vek) OD používateľov

Aktualizácia záznamu - AKTUALIZÁCIA

Nechajte Maxa Lopesa nastaviť vek na 15 rokov. To sa robí pomocou dotazu MySQL:

AKTUALIZOVAŤ užívatelia SET age = "15" WHERE name = "Max" AND priezvisko = "Lopes"

Všimnite si nový príkaz AND (a - v angličtine znamená „a“) ​​v dotaze. Ak neuvedieme priezvisko, potom bude pre všetkých Maxov v tabuľke stanovený vek 15 rokov.

Jeden dotaz môže aktualizovať dve alebo viac polí v jednom riadku. To sa robí nasledovne:

UPDATE užívateľov SET age = "18", priezvisko = "Coocker" WHERE id = "3"

Naša tabuľka nemá pole id, takže na ňu tento dotaz nebude fungovať. Ale určite sa naučíme toto pole obsahujúce jedinečné čísla riadkov.

Odstrániť záznam - VYMAZAŤ

Dotazom na databázu MySQL odstráňte záznam:

ODSTRÁNIŤ OD užívateľov WHERE id = "10"

V našej tabuľke opäť nie je žiadne pole id. Môžeme z nej však odstrániť všetkých ľudí mladších ako 18 rokov.

ODSTRÁNIŤ OD užívateľov KDE JE vek< "18"

DROP TABLE

Databázový dotaz MySQL, ktorý vymaže celú tabuľku používateľov:

DROP TABLE užívateľov

Vrhnutie stĺpca - ALTER TABLE ... DROP ...

Niekedy môže byť potrebné odstrániť stĺpec z tabuľky, napríklad odstráňme stĺpec veku od používateľov:

ALTER TABLE užívatelia DROP vek

Tento dopyt MySQL odstránil stĺpec natrvalo a neodvolateľne.

Pridať stĺpec - ZMENIŤ TABUĽKU ... PRIDAŤ ...

Niekedy možno budete chcieť pridať stĺpec do existujúcej tabuľky, napríklad do tabuľky používateľov znova pridajte stĺpec veku:

ALTER TABLE users ADD age TINYINT UNSIGNED

Premenovanie stĺpca - ZMENIŤ TABUĽKU ... ZMENIŤ ...

Niekedy môže byť potrebné premenovať stĺpec, napríklad premenovať stĺpec veku na vozrast. Robíme to takto:

ALTER TABLE users CHANGE age vozrast TINYINT UNSIGNED

Tento dotaz MySQL premenoval stĺpec veku na vozrast s dátovým typom TINYINT UNSIGNED.

Premenovanie tabuľky - PREJMENUJTE TABUĽKU ... TO ...

Niekedy môže byť potrebné tabuľku premenovať:

PREJMENUJTE používateľov TABUĽKY ľuďom

Zrušenie databázy - DATABÁZA DROP

Tento dotaz môže databázu zrušiť pomocou testera názvov:

DROP DATABASE tester

Vytvorenie databázy - VYTVORTE DATABÁZU

Tento dotaz vytvorí databázu s názvom tester:

VYTVORIŤ tester DATABÁZY

Táto požiadavka na mňa funguje v Denveri, ale na hostingu nemusí fungovať, ak používateľ databázy nemá povolenie na odstránenie.

Výsledky

V tejto časti sme sa teda zoznámili s dotazmi na MySQL. Mnohé z požiadaviek, ktoré sme zvážili, nám často nie sú v procese práce užitočné, ale musíte ich poznať, pretože v procese vývoja skriptov sa vám budú určite hodiť.

Niektoré požiadavky sú zvyčajne odoslané iba z phpMyAdmin (napríklad vytváranie a odstraňovanie databáz).

Pri práci na webových stránkach zvyčajne potrebujete pridať záznam do tabuľky, upraviť záznam alebo odstrániť záznam z tabuľky.

Ďalším krokom je preskúmanie dátových typov MySQL.