Komputery Okna Internet

Wysyłanie zapytań do bazy danych w PHP. Wszechmocna funkcja zapytania - ostateczny przewodnik po zapytaniach w mysql z zapytania php mysqli

Myślę, że wszyscy słyszeli o regule Pareto. W dowolnym obszarze 20% wysiłku daje 80% wyniku. Na przykład 20% swojej garderoby nosisz przez 80% czasu, 20% Twoich klientów generuje 80% Twoich dochodów. Podobnie w Arkuszach Google: znając 20% istniejących funkcji, możesz rozwiązać 80% wszystkich możliwych problemów.

Uważam, że Query jest jedną z najbardziej przydatnych funkcji Arkuszy Google. Ale w pomocy Google jest to opisane bardzo powierzchownie, a pełna moc tej funkcji nie jest ujawniana. Po bliższym przyjrzeniu się staje się jasne, że jest w stanie zastąpić większość istniejących funkcji.

Do pracy z QUERY będziesz potrzebować podstawowej wiedzy na temat SQL. Dla tych, którzy nie wiedzą, nie daj się zastraszyć, funkcja QUERY faktycznie obsługuje najbardziej podstawowe funkcje SQL.

Składnia QUERY

QUERY (dane; zapytanie; [nagłówki])
  • dane- jest to zakres komórek, które będą służyć jako baza danych dla zapytania SQL;
  • zapytanie- tekst zapytania SQL;
  • nagłówki Jest opcjonalnym argumentem, w którym możesz określić, ile pierwszych wierszy tablicy zawiera nagłówki.

Aby uzyskać maksymalną percepcję dalszych informacji, proponuję otworzyć i skopiować następujący arkusz kalkulacyjny Google.

W dokumencie, który właśnie zrobiłeś, jest kilka kartek. Arkusz DB to baza danych, do której uzyskamy dostęp za pomocą funkcji QUERY. Arkusze poziomów zawierają przykłady, którym przyjrzymy się w tym artykule. Przykład będzie się komplikował z każdym nowym poziomem.

Plan zapytania SQL w funkcji Query

Każde zapytanie SQL składa się z oddzielnych bloków, które często nazywane są oszczerstwami. SQL dla funkcji Query korzysta ze składni Google Visualization API Query Language, która obsługuje następujące slajdy:

  • Wybierz- wyliczenie pól, które zostaną zwrócone przez żądanie;
  • gdzie- zawiera listę warunków, według których macierz danych przetwarzanych przez żądanie zostanie przefiltrowana;
  • Grupuj według- zawiera listę pól, według których chcesz pogrupować wynik;
  • sworzeń- Pomaga budować tabele krzyżowe, używając wartości jednej kolumny jako nazw kolumn tabeli końcowej;
  • Zamów przez- odpowiada za sortowanie wyników;
  • limit- korzystając z tej części zapytania można ustawić limit liczby wierszy zwracanych przez zapytanie;
  • zrównoważyć- za pomocą tego oszczerstwa możesz ustawić liczbę pierwszych wierszy, które nie powinny być przetwarzane przez zapytanie;
  • etykieta- to oszczerstwo jest odpowiedzialne za nazwy pól zwracanych przez zapytanie;
  • format- odpowiada za format danych wyjściowych;
  • opcje - umożliwia ustawienie dodatkowych parametrów do wyprowadzania danych.

Witaj świecie dla funkcji zapytania (wybierz)

Przejdźmy do arkusza Level_1 i spójrzmy na formułę w komórce A1.

Zapytanie (DB! A1: L1143; "wybierz * limit 100")

Część formuły „ DB! A1: L1143" odpowiedzialny za bazę danych, z której dokonamy wyboru. Druga część " wybierz * limit 100„Zawiera tekst samego żądania. Znak "*" w tym przypadku oznacza zwrócenie wszystkich pól zawartych w bazie danych. Używając " limit 100»Ograniczamy wydajność do maksymalnie 100 linii. To jest przykład najprostszego zapytania. Wybraliśmy pierwsze 100 wierszy z bazy danych. Jest to rodzaj „Hello world” dla funkcji Query.

Korzystanie z filtrów i sortowania (Gdzie, Sortuj według)

Przejdź do arkusza Level_2. Wybierzmy tylko niektóre z potrzebnych nam pól i ustawmy warunki filtrowania i sortowania. Na przykład używamy danych tylko dla kampanii Campaign_1 i Campaign_2 z okresu 22-25 października 2015 r. Posortujmy je w porządku malejącym według sumy sesji. Aby filtrować i sortować, musisz dodać opis oszczerstwa do tekstu żądania Gdzie oraz Zamówienie... Aby wyprowadzić opisany powyżej przykład do tabeli wyników, potrzebujemy pól Kampania, Data i Sesje. To oni muszą zostać wymienieni w oszczerstwie. Wybierz.

Odwołanie do pól bazy odbywa się poprzez nazwy kolumn arkusza roboczego, na którym znajduje się baza danych.

W naszym przypadku dane znajdujące się na arkuszu DB i odnoszące się do określonych pól zapisywane są jako nazwy kolumn arkusza. Dlatego wymagane pola znajdują się w następujących kolumnach:

  • pole Data- kolumna A;
  • pole Kampania- kolumna B;
  • pole Sesje- kolumna G.

W związku z tym część zapytania, która odpowiada za listę wyprowadzanych danych, będzie wyglądać tak:

Wybierz A, B, G

Dalej we wniosku jest oszczerstwo Gdzie... Pisząc prośbę, oszczerstwa należy umieszczać w kolejności, w jakiej zostały opisane w pierwszej części tego artykułu. Po ogłoszeniu Gdzie musimy wymienić warunki filtrowania. W tym przypadku filtrujemy dane według nazwy kampanii (Campaign) i daty (Date). Używamy kilku warunków filtrowania. W tekście zapytania między wszystkimi warunkami musi być operator logiczny OR lub AND. Filtrowanie według dat różni się nieco od filtrowania według wartości liczbowych i tekstowych, aby je zastosować, należy użyć operatora Date. Część żądania odpowiedzialna za filtrowanie danych będzie wyglądać tak:

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

Filtrowanie danych za pomocą nawiasów podzieliliśmy na dwie logiczne części: pierwsza filtruje według dat, druga - według nazwy kampanii. Na tym etapie formuła opisująca wybrane dane oraz warunki filtrowania danych wygląda następująco:

Zapytanie (DB! A1: L1143; "Wybierz A, B, G GDZIE (A> = data" 2015-10-22 "I A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")")

Możesz go skopiować i wkleić na przykład na nowym arkuszu dokumentu, który jest używany jako przykład w tym poście, a otrzymasz następujący wynik:

Oprócz zwykłych operatorów logicznych (=,<, >) klauzula WHERE obsługuje dodatkowe operatory filtrowania:

  • zawiera- sprawdza zawartość określonych znaków w ciągu. Na przykład WHERE A zawiera „John” zwróci do filtra wszystkie wartości z kolumny A zawierające John, na przykład John Adams, Long John Silver;
  • zaczynać z- filtruje wartości po prefiksie, czyli sprawdza znaki na początku linii. Na przykład zaczyna się od „en” zwróci inżynierię i angielski;
  • kończy się na- filtruje wartości na końcu linii. Na przykład linia 'Kowboj „Zostanie zwrócony z„ kończy się na „chłopiec” ”lub„ kończy się na „y” ”;
  • mecze— dopasowuje wyrażenie regularne. Na przykład: gdzie pasuje ‘.* Ia „Zwróci wartości Indii i Nigerii.
  • lubić - uproszczona wersja wyrażeń regularnych, sprawdza, czy ciąg pasuje do danego wyrażenia za pomocą symboli wieloznacznych. Obecnie like obsługuje dwa symbole wieloznaczne: „%” oznacza dowolną liczbę dowolnych znaków w ciągu, a „_” oznacza dowolny jeden znak. Na przykład „gdzie nazwa jak„ fre% ”” będzie pasować do linii „Wolny” ’, „Fred” ', i' freddy ’.

Żądanie już przefiltrowało dane na pewien okres i pozostawiło tylko potrzebne kampanie. Pozostaje tylko posortować wynik w kolejności malejącej w zależności od liczby sesji. Sortowanie w tych zapytaniach odbywa się tradycyjnie dla SQL za pomocą oszczerstw Zamów przez... Składnia jest dość prosta: wystarczy wymienić pola, według których chcesz posortować wynik, a także określić kolejność sortowania. Domyślna jest kolejność asc, czyli rosnąco. Jeśli określisz parametr desc po nazwie pola, zapytanie zwróci wynik w kolejności malejącej określonej w ukośniku Zamów przez pola.

W naszym przypadku za filtrowanie odpowiadać będzie linia w tekście żądania:

Zamów według G desc

W związku z tym końcowy wynik formuły na arkuszu Level_2, który rozwiązuje potrzebny nam problem, wygląda następująco:

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

Teraz możesz filtrować i sortować dane przy użyciu najprostszej składni SQL i funkcji QUERY.

".
Być może chłopaki z moskiewskiego biura nie mają czasu, więc będzie bezpłatne tłumaczenie Query Language Reference (wersja 0.7).
Interfejs API wizualizacji Google. Język zapytań (wersja 0.7)
Język zapytań interfejsu Google Visualization API umożliwia manipulowanie danymi przez wysyłanie zapytań do źródła danych.

Zazwyczaj do wizualizacji należy podać dane w określonej formie. Na przykład wykres kołowy wymaga dwóch kolumn: etykiety tekstowej i wartości liczbowej. Źródło danych może jednak nie odpowiadać tej strukturze. Może zawierać więcej kolumn lub ich kolejność będzie inna niż wymagana dla diagramu.
Język zapytań pozwala nam uporządkować dane w taki sposób, jaki jest nam potrzebny do uzyskania wyniku.
Składnia języka zapytań jest podobna do SQL. Osoby biegle w posługiwaniu się SQL będą mogły szybko opanować język zapytań. Sekcja składnia identyfikuje różnice w tych językach.
Zauważ, że nie zawsze jest konieczne użycie języka zapytań do renderowania. Do korzystania z niego wymagana jest podstawa. Do treści.

Korzystanie z języka zapytań

Ciąg zapytania można dodać do źródła danych na dwa sposoby: z kodu JavaScript lub jako parametr do łącza źródła danych. Jeśli łącze nie zawiera parametrów zapytania, domyślnie zwracany jest cały zestaw danych. Możesz zmienić ten zestaw, dostosowując zapytanie do samego źródła danych.

Jeśli korzystasz z funkcji QUERY w Arkuszach Google, możesz pominąć kolejne kroki i przejść do następnej części.

Ustawianie żądania z JavaScript

Aby ustawić ciąg zapytania z kodu JavaScript, musisz wywołać metodę setQuery klasa google.visualization.Query.
var zapytanie = nowe google.visualization.Query (DATA_SOURCE_URL);
query.setQuery ("wybierz dział, suma (wynagrodzenie) grupuj według działu");
zapytanie.send (handleQueryResponse);

Ciąg zapytania do źródła danych można dodać za pomocą parametru tq... W ten sposób można korzystać z wizualizacji napisanych przez innych programistów, po prostu dostosowując ich zestaw danych.
Ciąg zapytania musi być poprawnie zakodowany w adresie URL. Możesz użyć funkcji JavaScript encodeURIComponent do kodowania lub zrób to ręcznie za pomocą narzędzia na końcu sekcji.
Przykład
Rozważ przykładowe zapytanie dotyczące Arkuszy Google (pamiętaj, że identyfikatory kolumn są zawsze literami. Nazwy kolumn nie są identyfikatorami podczas publikowania. W zapytaniu należy użyć identyfikatorów kolumn).
Po zakodowaniu żądanie będzie wyglądać tak:
wybierz% 20A% 2C% 20suma (B)% 20grupa% 20by% 20A
Załóżmy, że adres Tabeli Danych jest następujący:
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE
Dodaj parametr żądania & tq = TWOJE_ZAPYTANIE_STRING do linku do Tabeli i pobierz gotowy ciąg zapytania
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE&tq=select%A%2C%20sum(B)%20group%20by%20A

Składnia języka

Przegląd

Mój język zapytań jest bardzo podobny do SQL. Jest jednak kilka szczegółów, które należy wziąć pod uwagę.
Tabela danych
Ten dokument zawiera termin „Tabela danych”, który odnosi się do wyników zapytania. Tabela składa się z wierszy i kolumn. Każda kolumna ma następujące właściwości:
  • ID (lub ID kolumny)... Używane w odniesieniu do kolumn tabeli. Pamiętaj, że wystarczy odnieść się do kolumny według identyfikatora. Sztuczka: staraj się nie używać spacji w identyfikatorach, może to powodować trudności w edycji żądania. Ponadto wszystkie identyfikatory ze spacjami muszą być ujęte w backticki.
  • Etykieta... Jest to ciąg, który jest zwykle wyświetlany użytkownikom końcowym. Na przykład legenda na wykresie kołowym lub tytuł wykresu tabeli. Nie dotyczy funkcji QUERY () w Arkuszach Google.
  • Typy danych... Obsługiwane są następujące typy danych: ciąg, liczba, wartość logiczna, data (data), data i czas (datetime), czas (timeofday). Wszystkie wartości w kolumnie będą miały typ danych tej kolumny lub będą miały wartość null. Te typy danych są bardzo podobne do typów JavaScript, a nie identyczne. Są one opisane w sekcji Literały.
  • Szablony formatowania... Tabele danych mogą obsługiwać wzorce formatowania dla wszystkich lub niektórych kolumn. Zostały one opisane w sekcji Formatowanie.
Tabela danych używana we wszystkich przykładach
W tym dokumencie w przykładach użyto tabeli z następującymi typami danych i kolumn:
Nazwa
strunowy

strunowy
pora obiadu
pora dnia

Pensja
numer

Data wynajmu
Data
wiek
numer
isSenior
logiczne
stażStartTime
data i godzina
Jan Eng 12:00:00 2005-03-19 35 prawda 2007-12-02 15:56:00
Dave Eng 12:00:00 2006-04-19 27 fałszywe zero
Wypad Eng 13:00:00 2005-10-10 30 fałszywe zero
Ben Sprzedaż 12:00:00 2002-10-10 32 prawda 2005-03-09 12:30:00
Dana Sprzedaż 12:00:00 2004-09-08 25 fałszywe zero
Mikrofon Marketing 13:00:00 2005-01-10 24 prawda 2007-12-30 14:40:00

Operatory językowe

Język zapytań składa się z następujących operatorów składających się z jednego lub dwóch słów. Operatorzy muszą podążać za sobą w kolejności pokazanej w tabeli:
Operator Stosowanie
Wybierz Wybiera, które kolumny iw jakiej kolejności zostaną zwrócone. Jeśli operator zostanie pominięty, zwrócone zostaną wszystkie kolumny tabeli.
Zwraca tylko te wiersze tabeli, które spełniają warunek. Jeśli operator zostanie pominięty, zwrócone zostaną wszystkie wiersze w tabeli.
Grupuj według Grupuje wartości według wiersza.
sworzeń Konwertuje unikalne wartości w kolumnach na nowe kolumny, podobnie jak w tabeli przestawnej.
Zamów przez Sortuje ciągi na podstawie wartości.
limit Ustawia limit wierszy, które zostaną zwrócone.
zrównoważyć Pomija określoną liczbę wierszy z danych wyjściowych.
etykieta Ustawia etykiety kolumn.
format Formatuje wartości w określonych kolumnach zgodnie z wzorcami formatowania.
opcje Ustawia dodatkowe parametry.
z Operator nadawcy nie jest używany.
Wybierz
Instrukcja select określa, które kolumny powinny zostać zwrócone iw jakiej kolejności. Jeśli nie określono operatora lub określono *, wszystkie kolumny tabeli zostaną zwrócone w oryginalnej kolejności. Do kolumn można odwoływać się za pomocą identyfikatorów, ale nie za pomocą etykiet. Identyfikatory w Arkuszach Google to jedno- lub dwuliterowe nazwy kolumn (A, B, C, ..., AC, ..., DC, ...).
Parametrami operatora mogą być identyfikatory kolumn, funkcje agregujące, funkcje skalarne lub operatory arytmetyczne.
Przykłady:
Wybierz *
wybierz dział, wynagrodzenie
wybierz max (wynagrodzenie)
adres e-mailData):

Otrzymujemy wynik:
pora obiadu Nazwa
12:00:00 Jan
12:00:00 Dave
13:00:00 Wypad
12:00:00 Ben
12:00:00 Dana
13:00:00 Mikrofon
Klauzula where służy do zwracania tylko tych wierszy, które spełniają warunki.
Proste operatory porównania służą do opisu warunków<=, <, >, >=, =, !=, <>... Obaj operatorzy! =,<>mieć na myśli nie równe... Struny są porównywane zgodnie z ich znaczeniem leksykograficznym. Uwaga, równość jest sprawdzana za pomocą operatora =, a nie za pomocą ==, jak w wielu językach... Porównanie z wartością null jest wykonywane przez wartość null i nie ma wartości null. Podczas korzystania z QUERY () w Arkuszach Google często zdarza się, że pole ciągu jest puste „”, a nie puste.
Możesz łączyć wiele warunków za pomocą operatorów logicznych i lub nie. Nawiasy są używane do zdefiniowania wyraźnego pierwszeństwa.

Klauzula where używa również dodatkowych operatorów dla bardziej złożonych porównań ciągów. Te operatory przyjmują dwa argumenty, które muszą być ciągami, każdy argument niebędący ciągiem (data, liczba) zostanie przekonwertowany na ciąg przed porównaniem. W porównaniu rozróżniana jest wielkość liter (aby wygładzić tę funkcję, użyj funkcji skalarnych górny (), dolny ()).
zawiera — dopasowuje podciąg. Wyrażenie zwróci true, jeśli część ciągu całkowicie pasuje do podanego argumentu - podciągu. Na przykład, gdzie imię zawiera "Jan" zwróci „Jan”, „John Adams”, „Długi John Silver” ale nie „Jan Adams”.

Przykłady:
Wybierz *
wybierz dział, wynagrodzenie
wybierz max (wynagrodzenie)
Poniższy przykład pokazuje użycie identyfikatorów odwołań ze spacjami ( adres e-mail) i identyfikatory pasujące do nazw słów zastrzeżonych ( Data):
wybierz `adres e-mail`, imię, `data`
Zastosujmy następujące zapytanie do tabeli z przykładu:
Otrzymujemy wynik:
pora obiadu Nazwa
12:00:00 Jan
12:00:00 Dave
13:00:00 Wypad
12:00:00 Ben
12:00:00 Dana
13:00:00 Mikrofon
ratunek mysql_query(ciąg zapytania [, identyfikator_linku zasobu])

mysql_query () wysyła żądanie do aktywnej bazy danych serwera, do którego odwołuje się przekazany wskaźnik. Jeśli identyfikator_połączenia zostanie pominięty, używane jest ostatnie otwarte połączenie. Jeśli nie ma otwartych połączeń, funkcja próbuje połączyć się z DBMS, podobnie do funkcji mysql_connect () brak parametrów. Wynik zapytania jest buforowany.

Komentarz: Ciąg zapytania NIE może kończyć się średnikiem.

Tylko dla zapytań SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query () zwraca wskaźnik do wyniku zapytania, lub FAŁSZYWE jeśli żądanie nie zostało wypełnione.
W innych przypadkach (INSERT, UPDATE, DELETE, DROP itp.), mysql_query () zwroty PRAWDA w przypadku udanego wniosku i FAŁSZYWE w przypadku błędu. Wartość nie jest równa FAŁSZYWE wskazuje, że żądanie zostało zakończone pomyślnie. Nie mówi o liczbie wierszy dotkniętych lub zwróconych. Jest całkiem możliwe, że pomyślne żądanie nie wpłynie na żaden wiersz.

Następujące zapytanie jest nieprawidłowe i mysql_query () wróci FAŁSZYWE :

mysql_query () jest również uważany za błędny i wróci FAŁSZYWE jeśli nie masz wystarczających uprawnień do pracy z tabelą określoną w zapytaniu.

Podczas pracy z wynikami zapytania możesz użyć funkcji mysql_num_rows () aby znaleźć liczbę wierszy zwróconych przez zapytanie SELECT lub mysql_affected_rows () aby znaleźć liczbę wierszy przetworzonych przez zapytania DELETE, INSERT, REPLACE lub UPDATE.

Tylko dla zapytań SELECT, SHOW, DESCRIBE, EXPLAIN, funkcji mysql_query () zwraca wskaźnik do wyniku, którego można użyć w funkcji mysql_fetch_array () i inne funkcje, które zajmują się wynikami zapytań. Po zakończeniu pracy z wynikiem możesz zwolnić zasoby używane do jego przechowywania za pomocą funkcji

Notatka: Nadbudowa Zapytanie o moc oferowane w programie Excel 2016 jako grupa poleceń Pobierz i przekonwertuj... Informacje zawarte w tym artykule dotyczą zarówno dodatku Power Query, jak i nowej grupy. Aby uzyskać więcej informacji, zobacz Pobieranie i konwertowanie w programie Excel 2016.

W dodatku Power Query operacja Dodać tworzy nowe zapytanie zawierające wszystkie wiersze z pierwszego zapytania, a następnie wszystkie wiersze z drugiego zapytania.

Uwaga dotycząca bezpieczeństwa: Poziomy prywatności zapobiegać przypadkowej agregacji danych z wielu źródeł, które mogą być prywatne lub organizacyjne. W przypadku niektórych zapytań użytkownik może przypadkowo wysłać dane z prywatnego źródła danych do innego źródła. Atakujący mogą skorzystać z tej okazji. Dodatek Power Query analizuje każde źródło danych i określa jego poziom prywatności: publiczny, organizacyjny i prywatny. Aby uzyskać więcej informacji na temat poziomów prywatności, zobacz Poziomy prywatności.

Trwa dodawanie

Możesz wykonać dwa rodzaje operacji dodawania: pośredni dodatek lub dołączanie w tekście... Za pomocą pośredni dodatek dla każdej operacji dodawania tworzone jest nowe zapytanie. Na dołączanie w tekście dodajesz dane do istniejącego zapytania, aż osiągniesz ostateczny wynik. Wynikiem jest nowy krok na końcu bieżącego zapytania.

Wbudowany dodatek

Dodanie pośrednie


Zobacz też:

Notatka: Edytor zapytań wyświetlane tylko podczas ładowania, edycji lub tworzenia nowego żądania za pomocą Zapytanie o moc... Film pokazuje okno edytor zapytań który pojawia się po zmianie zapytania w skoroszycie programu Excel. Obejrzeć edytor zapytań bez pobierania lub modyfikowania istniejącego zapytania w skoroszycie, w sekcji Pobieranie danych zewnętrznych na karcie wstążki Zapytanie o moc wybierać Z innych źródeł> Puste zapytanie... Film pokazuje jedną z metod wyświetlania edytor zapytań.

Dowiedzieliśmy się, jak połączyć się z serwerem MySQL, wybrać bazę danych do pracy, poznaliśmy funkcję PHP polegającą na wysyłaniu zapytań do serwera MySQL, poznaliśmy dwa proste zapytania (tworzenie i usuwanie tabeli) oraz nauczyliśmy się zamykać połączenie.

Zagłębimy się teraz w zapytania MySQL. Więc zacznijmy!

Tworzenie tabeli - CREATE TABLE

Teraz mamy pustą bazę danych, nie ma w niej żadnych tabel. Więc najpierw stwórzmy tabelę. Wiemy już, jak to zrobić od pierwszej części.

Oto kod skryptu, który utworzy potrzebną nam płytkę:

$ link = mysqli_connect ("localhost", "root", "", "tester"); jeśli (! $ link) umiera ("Błąd"); $ query = "CREATE TABLE użytkownicy (logowanie VARCHAR (20), hasło VARCHAR (20))"; if (mysqli_query ($ link, $ zapytanie)) echo "Tabela została utworzona."; else echo "Tabela nie została utworzona:" .mysqli_error (); mysqli_close (link $);

W naszej tabeli są tylko dwa pola: login i hasło. Na razie nie potrzebujemy więcej, nie komplikujmy procesu.

Tak więc tabela została utworzona.

Dodawanie wierszy (rekordów) do tabeli - INSERT

Możesz dodać nowy wiersz do tabeli za pomocą polecenia SQL insert. Oto przykład:

$ link = mysqli_connect ("localhost", "root", "", "tester"); jeśli (! $ link) umrze ("Błąd"); $ query = "INSERT INTO users (login, hasło) VALUE (" zeus "," pass123 ")"; if (mysqli_query ($link, $ zapytanie)) echo "Użytkownik został dodany."; else echo "Nie dodano użytkownika:". mysqli_error (); mysqli_close (link $);

Zapytanie SQL składa się z polecenia INSERT INTO, nazwy bazy użytkowników, następnie nazw pól w nawiasach, następnie słowa WARTOŚĆ i dodanych wartości w nawiasach. Podane są wartości.

Składnia żądania wygląda tak:

INSERT INTO nazwa_tabeli (kolumna1, kolumna2) VALUE ("x1", "x2")

Cytaty w drugich nawiasach są wymagane.

Zmienne mogą zastępować wartości. Oto przykład:

$ link = mysqli_connect ("localhost", "root", "", "tester"); jeśli (! $ link) umrze ("Błąd"); $ login = "zeus"; $ hasło = "pass123"; $ query = "WSTAW użytkowników (login, hasło) VALUE (" $ login "," $ hasło ")"; if (mysqli_query ($link, $ zapytanie)) echo "Użytkownik został dodany."; else echo "Nie dodano użytkownika:". mysqli_error (); mysqli_close (link $);

Oczywiście ten przykład nie ma sensu. Początkującym może przydać się informacja, że ​​w ten sposób w bazie danych zapisywane są loginy i hasła podane przez użytkowników podczas rejestracji. Dane te są przechowywane w zmiennych, a następnie po sprawdzeniu są zapisywane do bazy danych.

Istnieje szybki sposób wstawiania wielu wierszy za pomocą jednego zapytania INSERT:

INSERT INTO (login, hasło) VALUE ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")

Jak widać, wyliczone dane są po prostu oddzielone przecinkami.

Tak więc, używając polecenia INSERT, nauczyliśmy się dodawać rekordy do tabeli. Pójść dalej.

Widok tabeli: polecenie WYBIERZ

Mamy teraz tabelę użytkowników, która ma wiersze. Poprzedni skrypt można uruchomić wiele razy i za każdym razem doda wiersz do tabeli. Teraz możemy nie wiedzieć, ile wierszy mamy w tabeli. I chcę wiedzieć, co w nim napisaliśmy.

Aby pobrać dane z tabeli, użyj polecenia SQL SELECT. Znak * oznacza, że ​​żądamy wszystkich danych, następnie po słowie FROM wpisujemy nazwę tabeli, z której chcemy pobrać dane.

Przeanalizujmy wszystkie dane z tabeli użytkowników:

$ link = mysqli_connect ("localhost", "root", "", "tester"); jeśli (! $ link) umrze ("Błąd"); $ query = "WYBIERZ * Z użytkowników"; $ wynik = mysqli_query ($ link, $ zapytanie); if (! $ wynik) echo "Wystąpił błąd:". mysqli_error (); else echo "Odebrano dane"; mysqli_close (link $);

Funkcja mysqli_query() zwróciła nam identyfikator wyniku zapytania - umieszczamy go w zmiennej iw przyszłości będziemy z nim pracować za pomocą innych funkcji PHP.

Liczba rekordów we wniosku

Sprawdźmy, ile wierszy znajduje się w naszym zapytaniu? Sam uruchamiałem skrypt dodawania rekordu do tabeli, nie pamiętam ile razy, a teraz nie wiem ile wierszy jest w mojej tabeli.

Funkcja mysqli_num_rows() służy do określenia liczby wierszy w wyniku zapytania. Ta funkcja przekazuje identyfikator wyniku zapytania i zwróci liczbę rekordów.

$ link = mysqli_connect ("localhost", "root", "", "tester"); jeśli (! $ link) umiera ("Błąd"); $ query = "WYBIERZ * Z użytkowników"; $ wynik = mysqli_query ($ link, $ zapytanie); if (! $ wynik) echo "Wystąpił błąd:". mysqli_error (); else echo "Odebrano dane"; liczba $ = mysqli_num_rows (wynik $); echo "Suma wierszy w tabeli: liczba $."; mysqli_close (link $);

Jeśli musimy znaleźć liczbę rekordów w tabeli, to podana metoda nie jest najwłaściwsza. Tutaj ustaliliśmy liczbę rekordów znalezionych w zapytaniu, ale liczba rekordów w tabeli jest przeszukiwana inaczej.

Liczba rekordów w tabeli WYBIERZ LICZBA (*)

Aby sprawdzić liczbę rekordów w tabeli, możesz użyć polecenia SELECT COUNT (*) FROM nazwa_tabeli.

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); $ query = "WYBIERZ * Z użytkowników"; $ wynik = mysqli_query ($ link, $ zapytanie); if (! $ wynik) echo "Wystąpił błąd:". mysqli_error (); else echo "Odebrano dane."; liczba $ = mysqli_fetch_row (wynik $); echo "Suma wierszy w tabeli: liczba $."; mysqli_close (link $);

Zauważ, że tutaj użyliśmy nowej funkcji PHP mysqli_fetch_row() do pobierania danych. Ta funkcja zwraca wiersz wyniku zapytania w postaci prostej tablicy, w naszym przypadku w wierszu jest jedno pole i ma indeks 0.

Przeglądanie wyniku zapytania w pętli

Po wykonaniu zapytania SQL poleceniem SELECT i uzyskaniu identyfikatora wyniku zapytania, PHP tworzy wewnętrzny wskaźnik w zestawie rekordów wyników. Ten wskaźnik automatycznie przechodzi do następnego rekordu po odwołaniu się do bieżącego rekordu. Ten mechanizm bardzo ułatwia przeglądanie zestawu wyników zapytania SELECT.

PHP posiada kilka funkcji, dzięki którym można uzyskać tablicę składającą się z jej pól dla każdej linii wynikowego zapytania. Jako przykład weźmy funkcję mysqli_fetch_row(). Ta funkcja przekazuje identyfikator żądania i zwraca tablicę. Czyli w pętli skanowany jest cały wynik zapytania, a po dojściu do końca zapytania funkcja zwróci false.

Więc pytamy o wszystkie dane z tabeli users (SELECT * FROM users).


"; while ($ row = mysqli_fetch_row ($ wynik)) (echo" Login: $ rząd. Hasło: $ rząd.
";) mysqli_close (link $);

Mysqli_fetch_row() zwraca prostą tablicę. W każdej iteracji pętli otrzymamy tablicę z wierszem z tabeli, do której pól mamy dostęp podając indeks liczbowy.

To samo można zrobić za pomocą funkcji mysql_fetch_assoc(), zwraca ona tablicę asocjacyjną.

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); $ wynik = mysqli_query ($ link, "SELECT * FROM users"); if (! $ wynik) echo "Wystąpił błąd:". mysqli_error (); else echo "Odebrano dane.
"; while ($ row = mysqli_fetch_assoc ($ wynik)) (echo" Login: $ rząd. Hasło: $ rząd.
";) mysqli_close (link $);

Istnieją również funkcje mysqli_fetch_array () - zwraca dowolny typ tablicy, oraz mysqli_fetch_object () - zwraca obiekt.

Zapytanie SELECT DISTINCT — Unikalne wartości pól

Stwórzmy nową tabelę:

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); // upuść istniejącą tabelę mysqli_query ($ link, "użytkownicy DROP TABLE"); // utwórz nową tabelę $ query = "CREATE TABLE users (imię VARCHAR (20), nazwisko VARCHAR (20), wiek TINYINT UNSIGNED)"; if (mysqli_query ($ link, $ zapytanie)) echo "Tabela została utworzona.
"; else echo" Tabela nie została utworzona: ". mysqli_error (); // funkcja dodawania rekordów do tabeli funkcja add_new_line ($link, $ zapytanie) (if (! mysqli_query ($ link, $ zapytanie)) echo" Użytkownik nie dodano : ". mysqli_error ();) // dodaj rekordy add_new_line (link $," INSERT INTO użytkownicy (imię, nazwisko, wiek) VALUE ("Max", "Jayson", "33") "); add_new_line (link $ , "WSTAW użytkowników (imię, nazwisko, wiek) VALUE (" Bob "," Freeman "," 26 ")"); add_new_line ($ link, "WSTAW użytkowników (imię, nazwisko, wiek) VALUE (" Sara " , "Lopes", "65") "); add_new_line ($link," INSERT INTO users (imię, nazwisko, wiek) VALUE ("Serg", "Pupin", "29") "); add_new_line ($link, " INSERT INTO użytkownicy (imię, nazwisko, wiek) VALUE ("Serg", "Borman", "43") "); add_new_line ($link," INSERT INTO użytkownicy (imię, nazwisko, wiek) VALUE ("Max", " Lopes "," 21 ")"); // wyświetl zawartość tabeli w przeglądarce $ wynik = mysqli_query ($ link, "SELECT * FROM users"); if (! $ Wynik) echo "Wystąpił błąd: ". Mysqli_error (); else echo "Odebrano dane.
"; while ($ rząd = mysqli_fetch_assoc ($ wynik)) (echo" Imię: $ rząd. Nazwisko: $ rząd. Wiek: $ rząd.
";) mysqli_close (link $);

Mamy więc nową, bardziej złożoną tabelę z unikalnymi rekordami. Zobaczmy teraz ile nazw mamy w bazie danych.

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); $ wynik = mysqli_query ($ link, "SELECT DISTINCT name FROM users"); echo "Nazwiska łącznie:". mysqli_num_rows (wynik $). "
"; echo" Lista nazwisk:
"; while ($ nazwa = mysqli_fetch_row ($ wynik)) (echo" $ nazwa
";) mysqli_close (link $);

Zapytanie SQL „SELECT DISTINCT name FROM users” zwróciło wynik ze wszystkimi unikalnymi nazwami w naszej tabeli. Każda unikatowa nazwa w nowym wierszu wyniku zapytania.

Sortowanie wyników - ORDER BY

Dodając do zapytania SQL polecenie ORDER BY, wynik zapytania sortujemy rosnąco (liczby i litery alfabetycznie). Oto przykład, w którym możesz porównać zwykłe zapytanie i posortować je według wieku (pole wieku).



";) echo" Sortuj według wieku:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkowników ORDER BY wiek "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: $ linia. Nazwisko: $ linia. Wiek: $ linia.
";) mysqli_close (link $);

Możesz zastąpić pole wieku w poleceniu ORDER BY polem nazwy i zobaczyć wynik.

Aby posortować wyniki zapytania w odwrotnej kolejności, użyj polecenia ORDER BY age DESC.

Warunek dopasowania - GDZIE

Dodając polecenie WHERE do zapytania SQL, zapytamy tylko te rekordy, które spełniają warunek. Na przykład złóżmy wniosek dla osób poniżej 30 roku życia.

Aby to zrobić, użyj zapytania SQL „SELECT * FROM użytkownicy WHERE wiek

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); echo "Osoby poniżej 30 roku życia:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkowników WHERE wiek<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
";) mysqli_close (link $);

Możemy również od razu posortować wynik w porządku rosnącym według wieku:
„WYBIERZ * OD użytkowników WHERE wiek<30 ORDER BY age ".

Jeśli utworzymy zapytanie „SELECT name FROM users WHERE wiek<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

Możemy odpytać wartości dwóch pól: „WYBIERZ imię, wiek FROM użytkowników WHERE wiek

Teraz zapytaj o wszystkich użytkowników o nazwie „Max”.

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); echo "Wszystkie Max:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkownicy WHERE nazwa = "Max" "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: linia $. Nazwisko: linia $. Wiek: linia $.
";) mysqli_close (link $);

I kolejny przykład zapytania - wybierze tylko nazwy z tabeli users, wszystko oprócz Maxa.

SELECT nazwa FROM użytkowników WHERE nazwa! = "Max"

To wszystko z klauzulą ​​WHERE.

Ograniczanie rekordów - LIMIT

Dodając komendę LIMIT do zapytania SQL ograniczymy rozmiar wyniku.

Kwerenda, która drukuje pierwsze trzy rekordy: "SELECT * FROM users LIMIT 3". Zobaczmy, jak to działa:

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); echo "Zawartość tabeli:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkownicy "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: linia $. Nazwisko: linia $. Wiek: linia $.
";) Echo"

Pierwsze trzy wpisy:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkowników LIMIT 3 "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: $ linia. Nazwisko: $ linia. Wiek: $ linia .
";) Echo"

Drugie trzy wpisy:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkowników LIMIT 3, 3 "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: $ linia. Nazwisko: $ linia. Wiek: $ linia ...
";) mysqli_close (link $);

Również tutaj użyliśmy zapytania: "SELECT * FROM users LIMIT 3, 3". Druga trójka wskazuje przesunięcie w wyniku zapytania.

Dopasowywanie wzorców - LIKE

Język SQL obsługuje proste wzorce. W tym celu używane jest polecenie LIKE, a wzorzec określany jest za pomocą znaku %.

Oto przykładowe zapytanie, które zwróci wszystkie rekordy o nazwach zaczynających się na literę S.

SELECT * FROM użytkowników GDZIE nazwa LIKE "S%"

Testowanie wniosku:

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); echo "Zawartość tabeli:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkownicy "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: linia $. Nazwisko: linia $. Wiek: linia $.
";) Echo"

Nazwy zaczynające się na S:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkownicy WHERE nazwa LIKE "S%" "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: linia $. Nazwisko: linia $ Wiek: linia $.
";) mysqli_close (link $);

Oto przykładowe zapytanie, które zwróci wszystkie rekordy z nazwiskami kończącymi się na literę s.

SELECT * FROM użytkowników GDZIE nazwa LIKE "% s"

Dopasowanie warunku - IN

To zapytanie używające polecenia IN zwróci tylko te wiersze, które ściśle spełniają warunek.

Na przykład interesują nas osoby w wieku 21, 26 i 33 lata.

WYBIERZ * OD użytkowników GDZIE wiek W (21,26,33)

Testowanie wniosku:

$ link = mysqli_connect ("localhost", "root", ""); jeśli (! $ link) umiera ("Błąd"); mysqli_select_db ("tester"); echo "Zawartość tabeli:
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkownicy "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: linia $. Nazwisko: linia $. Wiek: linia $.
";) Echo"

Osoby w wymaganym wieku (21, 26, 33):
"; $ wynik = mysqli_query ($ link," SELECT * FROM użytkownicy WHERE wiek IN (21, 26, 33) "); while ($ linia = mysqli_fetch_row ($ wynik)) (echo" Imię: linia $. Nazwisko : $ linia Wiek: $ linia.
";) mysqli_close (link $);

Maksymalna i minimalna wartość w kolumnie

Wybiera maksymalną wartość wieku w tabeli użytkowników.

SELECT max (wiek) FROM użytkowników

Poniższe zapytanie wybiera dane z tabeli users przy użyciu pól imię i wiek, gdzie wiek jest wartością minimalną.

SELECT imię, min (wiek) FROM użytkowników

Aktualizacja rekordu - UPDATE

Niech Max Lopes ustawi wiek na 15 lat. Odbywa się to za pomocą zapytania MySQL:

UPDATE users SET wiek = "15" GDZIE imię = "Max" AND nazwisko = "Lopes"

Zwróć uwagę na nowe polecenie AND (i - w języku angielskim oznacza "i") w zapytaniu. Jeśli nie podamy nazwiska, to dla wszystkich Maxów w tabeli zostanie ustawiony wiek 15 lat.

Jedno zapytanie może zaktualizować dwa lub więcej pól w jednym wierszu. Odbywa się to w następujący sposób:

UPDATE users SET wiek = "18", nazwisko = "Coocker" WHERE id = "3"

Nasza tabela nie posiada pola id, więc to zapytanie na niej nie zadziała. Ale na pewno nauczymy się tego pola zawierającego unikalne numery linii.

Usuń rekord - DELETE

Zapytanie do bazy danych MySQL w celu usunięcia rekordu:

USUŃ Z użytkowników WHERE id = "10"

Ponownie w naszej tabeli nie ma pola id. Ale możemy usunąć z niego wszystkie osoby poniżej 18 roku życia.

USUŃ Z użytkowników GDZIE wiek< "18"

UPUŚĆ TABELĘ

Zapytanie do bazy danych MySQL, które usuwa całą tabelę użytkowników:

Użytkownicy DROP TABLE

Upuszczenie kolumny - ALTER TABLE ... DROP ...

Czasami może być konieczne usunięcie kolumny z tabeli, na przykład usuńmy kolumnę wieku od użytkowników:

Użytkownicy ALTER TABLE UPUŚĆ wiek

To zapytanie MySQL usunęło kolumnę na stałe i nieodwołalnie.

Dodaj kolumnę - ALTER TABLE ... ADD ...

Czasami możesz chcieć dodać kolumnę do istniejącej tabeli, na przykład ponownie dodajmy kolumnę wieku do tabeli użytkowników:

ALTER TABLE użytkownicy DODAJ wiek TINYINT UNSIGNED

Zmiana nazwy kolumny - ALTER TABLE ... CHANGE ...

Czasami może być konieczna zmiana nazwy kolumny, na przykład zmiana nazwy kolumny wieku na vozrast. Robimy to tak:

ALTER TABLE użytkownicy ZMIEŃ wiek vozrast TINYINT UNSIGNED

To zapytanie MySQL zmieniło nazwę kolumny wieku na vozrast z typem danych TINYINT UNSIGNED.

Zmiana nazwy tabeli - RENAME TABLE ... TO ...

Czasami może być konieczna zmiana nazwy tabeli:

ZMIEŃ NAZWĘ użytkowników TABELI NA narody

Upuszczenie bazy danych - DROP DATABASE

To zapytanie może usunąć bazę danych z testerem nazw:

Tester DROP DATABASE

Tworzenie bazy danych - CREATE DATABASE

To zapytanie tworzy bazę danych o nazwie tester:

UTWÓRZ tester BAZ DANYCH

Ta prośba działa dla mnie w Denver, ale na hostingu może nie działać, jeśli użytkownik bazy danych nie ma uprawnień do wykonania usunięcia.

Wyniki

W tej części zapoznaliśmy się więc z zapytaniami do MySQL. Wiele z wniosków, które rozważaliśmy, często nie jest dla nas przydatne w procesie pracy, ale musisz je znać, ponieważ na pewno przydadzą się w procesie tworzenia skryptów.

Niektóre żądania są zwykle wysyłane tylko z phpMyAdmin (na przykład tworzenie i usuwanie baz danych).

W pracy z witrynami zwykle trzeba dodać rekord do tabeli, edytować rekord lub usunąć rekord z tabeli.

Następnym krokiem jest zbadanie typów danych MySQL.