Reklama
Wizyt
Dzisiaj: 77Wszystkich: 653883

Zapytania do bazy danych

Technikum » PAI » Język PHP » Bazy danych w PHP » Zapytania do bazy danych

 

Po nawiązaniu połączenia z wybraną bazą danych można wysyłać do niej zapytania. Są one przesyłane za pomocą funkcji mysqli_query() zapisanej w postaci:

  • połączenie - określa połączenie z bazą,
  • zapytanie - zawiera treść zapytania,
  • stan_wyniku - opcjonalne, określa sposób przetwarzania wyniku (domyślnie MYSQLI_STORE_RESULT).

 
Zwracane przez funkcję wartości zależą od typu zapytania. Jeżeli zapytanie pobierało dane (na przykład SELECT), to zwracany jest obiekt mysqli_result. Jeżeli zapytanie nie pobierało danych (na przykład INSERT), zwracana jest wartość true. Jeżeli wykonanie zapytania się nie powiodło, zwracana jest wartość false.


Przykład

Pobieranie danych:




Przykład

Wstawianie danych:

 

Zapytanie pobierające dane


Dla zapytań typu SELECT pobierających dane zwracany jest identyfikator zasobów. Może on zostać wykorzystany do odczytania tych danych. Można użyć w tym celu funkcji mysqli_fetch_row() lub mysqli_fetch_array().


Funkcja mysqli_fetch_row()

Po wywołaniu odczytuje jeden wiersz tabeli i zapisuje go w kolejnym wierszu tablicy. Aby odczytać całą zawartość tabeli, należy wywołać tę funkcję w pętli. Gdy wszystkie dane zostaną odczytane, funkcja zwróci wartość false.


Przykład




W podanym przykładzie zmienna $wynik zawiera identyfikator zasobów zwróconych przez zapytanie. W pętli zostaną odczytane kolejne wiersze tabeli zwrócone przez zapytanie i umieszczone w tablicy $wiersz.



Funkcja mysqli_num_rows()

Funkcja zwraca jako wartość liczbę wierszy znajdujących się w wyniku zapytania. Może być użyta do zbudowania pętli odczytującej kolejne wiersze zwrócone przez zapytanie.

Przykład


W pętli zostaną odczytane kolejne wiersze tabeli zwrócone przez zapytanie i umieszczone w tablicy $wiersz.

 

Funkcja mysqli_fetch_array()

Po wywołaniu odczytuje całą tabelę i zwraca tablicę asocjacyjną. Kluczami tej tablicy są nazwy kolumn zwróconej przez zapytanie tabeli.

Przykład



Przykład

Dysponujesz utworzoną w MySQL bazą danych ksiegarnia. Odczytaj dane z tabeli Klient.


W podanym przykładzie po połączeniu z serwerem i wybraniu bazy danych zostaje wywołana funkcja mysqli_query() , która wysyła do serwera zapytanie SQL (SELECT * FROM Klient). Wynik zwrócony przez funkcję zostaje przypisany do zmiennej $zapytanie. Jeżeli wynik ma wartość false, to znaczy, że w zapytaniu wystąpił błąd, i skrypt kończy działanie. Jeśli wszystko przebiegło poprawnie, w HTML tworzona jest tabela w celu sformatowania wyświetlanych danych otrzymanych z zapytania. Następnie w kodzie PHP wyniki zapytania są pobierane w pętli za pomocą funkcji mysqli_fetch_row() , która pobiera kolejne wiersze tabeli i umieszcza je w tablicy. Indeks 0 tablicy zawiera wartość pobraną z pierwszej kolumny wiersza tabeli, indeks 1 wartość z drugiej kolumny itd.

 

Klauzula WHERE

 

Klauzula WHERE jest dodawana do instrukcji SELECT wtedy, gdy należy wybrać tylko te wiersze, które spełniają określone kryterium.


Przykład

Skrypt, który zwróci z bazy dane osób, które mają nazwisko Kowalski.

W wyniku wykonania podanego skryptu z bazy danych zwrócone zostaną dane osób, które mają nazwisko Kowalski. Dane zostały pobrane za pomocą funkcji mysqli_ fetch_array() , która zapisała je w tablicy asocjacyjnej $tab. Kluczami tablicy $tab są nazwy kolumn tabeli SQL. Konstrukcje $tab['nazwisko'] i $tab['imie'] odwołują się do wartości zapisanych w tablicy i wyświetlają nazwiska i imiona klientów wybranych instrukcją SELECT.

 

Zapytanie wstawiające dane


Dla zapytań modyfikujących zawartość tabel funkcja mysqli_query() zwraca wartość true lub false. Natomiast za pomocą funkcji mysqli_affected_rows() można odczytać, ile wierszy zostało zmodyfikowanych przez zapytanie. Funkcja ma postać:

Argument identyfikator jest opcjonalny i zawiera identyfikator połączenia z serwerem. Jeżeli zostanie pominięty, działania będą dotyczyć ostatnio otwartego połączenia.

Zapytanie dodające nowe dane do tabeli jest realizowane przez polecenie INSERT INTO.


Przykład

Do tabeli Klient w bazie danych ksiegarnia dodaj nowego klienta o następujących danych: Anna Lisek, miejscowość: 34-100 Wadowice, ulica Lwowska, 11, PESEL: 95031203267, tel. 936789453, adres e-mail: ania@gmail.com.


W podanym kodzie po prawidłowym połączeniu z serwerem i wybraniu bazy danych zostaje utworzona zmienna $dodaj, w której jest przechowywany wynik zapytania SQL (INSERT INTO). Za pomocą funkcji mysqli_query() jest ono wysyłane do serwera. Instrukcja if sprawdza, czy funkcja mysqli_query() zwróciła wartość false, co oznacza, że zapytanie nie zostało obsłużone. Wtedy skrypt kończy działanie. Jeżeli zapytanie zostało przyjęte, to zmiennej $ile przypisywana jest wartość zwrócona przez funkcję mysqli_affected_rows() , określająca, ile wierszy w bazie danych zostało zmienionych. Ta informacja zostanie wyświetlona w przeglądarce.

Inną metodą dodawania nowych danych do tabeli jest wprowadzanie ich za pomocą formularza.

Przykład

Skrypt, który dane pobrane z formularza będzie dodawał w bazie ksiegarnia do tabeli Klient.

Formularz do wprowadzania danych do bazy



Tworzymy dwa skrypty. Skrypt HTML (form_klient.html) będzie zawierał formularz do wprowadzania danych klienta. W tym skrypcie dane wpisane do formularza zostaną przesłane do pliku dodaj_klienta.php.

Skrypt PHP (dodaj_klienta.php) doda otrzymane z formularza dane do tabeli Klient.

Skrypt form_klient.html



Skrypt dodaj_klienta.php



Podany skrypt jest podobny do poprzedniego skryptu. Jedyna zmiana to użycie w instrukcji INSERT INTO zmiennej $_POST['nazwa_pola'] w miejscu, gdzie poprzednio wstawione były wartości danych.

 

Aktualizowanie danych


Dane można aktualizować za pomocą instrukcji UPDATE.


Przykład

Aktualizacja w tabeli Klient danych klienta Nowak Andrzej. Dane do aktualizacji pobrane z z formularza dostępnego na stronie internetowej.


Aby zaktualizować dane klienta, należy wykonać kilka czynności:

  • wyszukać jego dane w bazie danych,
  • wyświetlić je za pomocą formularza na stronie internetowej,
  • pobrać przesłane z formularza zaktualizowane dane
  • zapisać dane w bazie.

 

Pierwszy skrypt pobiera dane z bazy i wyświetla je na stronie w postaci formularza.

Skrypt szukaj_klienta.php:



Po połączeniu z serwerem i wybraniu bazy danych zostaje wywołana funkcja mysqli_ query() , która wysyła do serwera zapytanie SQL (SELECT * FROM Klient WHERE Nazwisko = 'Nowak' and Imie = 'Andrzej '). W wyniku zostaną zwrócone dane wybranego klienta. Zwrócone dane zostają przypisane do zmiennej $zapytanie. Następnie za pomocą funkcji mysqli_num_rows() sprawdza się, ile wierszy zostało odczytanych z bazy. Jeżeli 0, to brak danych do dalszego przetwarzania i następuje zakończenie działania skryptu. Jeżeli więcej niż 1, to nie można określić, czyje dane powinny być aktualizowane, i również następuje zakończenie działania skryptu. Jeśli zostały odczytane dane jednego klienta, to będą one przypisane do zmiennych i nastąpi przejście do kodu HTML. W kodzie HTML nastąpi wyświetlenie formularza z bieżącymi danymi pobranymi z utworzonych zmiennych. Użytkownik może zaktualizować swoje dane i przesłać je do skryptu aktualizuj.php.


Bieżące dane pobrane z bazy danych do aktualizacji



Aktualizacja danych w bazie.

Skrypt aktualizuj.php



Skrypt instrukcją UPDATE aktualizuje dane przesłane z formularza i przekazane za pomocą zmiennej $_POST.

 

Tworzenie bazy danych


Do tworzenia bazy danych jest używana instrukcja SQL CREATE DATABASE. Należy dołączyć ją do funkcji mysqli_query().


Przykład


W przykładzie został pokazany fragment kodu PHP tworzący bazę danych moje_kino.

 

 

Tworzenie tabeli


Do tworzenia tabeli w istniejącej bazie danych jest używana instrukcja SQL CREATE TABLE. Należy dołączyć ją do funkcji mysqli_query() .


Przykład


W przykładzie został pokazany fragment kodu PHP tworzący tabelę Film.

 

 

Reklama