Reklama
Wizyt
Dzisiaj: 29Wszystkich: 383463

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 realizowane za pomocą funkcji mysql_query() zapisanej w postaci:



Argumentem funkcji jest treść zapytania. Opcjonalnie można podać drugi argument określający identyfikator połączenia.

Zwracane przez funkcję wartości zależą od typu zapytania. Jeżeli zapytanie pobierało dane, to wartością zwracaną jest identyfikator do tych danych. Jeżeli zapytanie nie pobierało danych, zwracana jest wartość true. Jeżeli wykonanie zapytania się nie powiodło, zwracana jest wartość false.

Zapytanie pobierające dane



Dla zapytań pobierających dane typu SELECT zwracany jest identyfikator zasobów. Może on zostać wykorzystany do odczytania tych danych. Do ich odczytania można użyć funkcji mysql_fetch_row() lub mysql_fetch_array().

 

Funkcja mysql_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ć funkcję w pętli. Gdy wszystkie dane zostaną odczytane, funkcja zwraca 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 $wiersze.

Funkcja mysql_num_rows() 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 $wiersze.


Funkcja mysql_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

Dysponując utworzoną w MySQL bazą danych Ksiegamia_internetowa. Odczytamy dane z tabeli Klient.



W podanym przykładzie po połączeniu z serwerem i wybraniu bazy danych zostaje wywołana funkcja mysql_query(), która wysyła do serwera zapytanie SQL (SELECT * FROM Klient). Wynik zwrócony przez funkcję zostaje przypisany zmiennej $zapytanie. Jeżeli wynik wynosi false, to znaczy, że w zapytaniu wystąpił błąd i skrypt kończy działanie. Jeżeli 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 mysql_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

 

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

 

Zapytanie wstawiające dane


Dla zapytań modyfikujących zawartość tabel funkcja mysql_query() zwraca wartość true lub false. Natomiast za pomocą funkcji mysql_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 dotyczą 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_internetowa zostanie dodany nowy wpis.



W podanym kodzie po prawidłowym połączeniu z serwerem i wybraniu bazy danych zostaje utworzona zmienna $dodaj , której zostaje przypisane zapytanie SQL (INSERT INTO) dodające do tabeli Klient nowy wpis. Za pomocą funkcji mysql_query() jest ono wysyłane do serwera. Instrukcja if sprawdza, czy funkcja mysql_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ę mysql_affected_rows(), określająca, ile wierszy w bazie danych zostało zmienionych. Ta informacja jest wyświetlana w przeglądarce.

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


Przykład

W tym przykładzie zostanie utworzony skrypt HTML (form_klient.html) zawierający formularz do wprowadzania danych klienta. Z kolei skrypt PHP (dodaj_klienta.php) będzie dodawał wprowadzone przez formularz dane do tabeli Klient.

Skrypt form_klient.html:


Dane wprowadzone do formularza zostaną przesłane do pliku dodaj_klienta.php.

Skrypt dodaj_klienta.php:



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

 

Aktualizowanie danych


Aktualizowanie danych jest realizowane za pomocą instrukcji UPDATE.


Przykład

W tabeli Klient zostaną zaktualizowane dane klienta Nowak Adam. Aby zaktualizować te dane, należy wykonać kilka czynności:

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


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



Po połączeniu z serwerem i wybraniu bazy danych zostaje wywołana funkcja mysql_ query(), która wysyła do serwera zapytanie SQL (SELECT * FROM Klient WHERE Nazwisko = 'Nowak' and Imie = 'Adam'). W wyniku zostaną zwrócone dane wybranego klienta. Zwrócone dane zostają przypisane do zmiennej $zapytanie. Następnie funkcją mysql_num_rows() sprawdzone będzie, 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żeli 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ępuje 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.

Kolejnym krokiem będzie 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 mysql_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 mysql_query().

Przykład



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






Reklama