BAZY DANYCH W PHP POŁĄCZENIE Z BAZĄ DANYCH NAWIĄZANIE POŁĄCZENIA Do połączenia z bazą danych służy funkcja mysqli_connect(): mysqli_connect('nazwa_hosta', 'nazwa użytkownika', 'hasło'); nazwa_hosta - nazwa lub adres IP serwera, na którym została umieszczona baza danych nazwa użytkownika - użytkownik domyślny hasło - pusty ciąg znaków Przykład <?php $do_bazy=mysqli_connect("localhost", 'jan', '2%azx'); if(!$do_bazy){ exit("Błąd połączenia z serwerem MySQL."); } else{ echo "Połączono z serwerem bazy danych<br>"; } ?> KOŃCZENIE POŁĄCZENIA mysqli_close('identyfikator'); Funkcja zwróci true, jeśli operacja zamykania zakończy się prawidłowo oraz false w przeciwnym przypadku. WYBÓR BAZY Po nawiązaniu połączenia z serwerem baz danych można określić bazę danych, z których będą pobierane dane. Służy do tego funkcja mysqli_select_db(): mysqli_select_db('nazwa_bazy', ['identyfikator']); Jeśli identyfikator pominiemy, wykorzystane zostanie połączenie ostatnio otwarte. Przykład. <?php $do_bazy=mysqli_connect("localhost", 'jan', 'haslo'); if(!$do_bazy){ exit("Błąd połączenia z serwerem MySQL."); } else{ echo "Połączono z serwerem bazy danych<br>"; if(!mysqli_select_db('ksiegarnia', $do_bazy)){ echo "Błąd podczas wyboru bazy danych<br>"; } else{ echo "Wybrana baza to: księgarnia internetowa.<br>"; //operacje na bazie danych } } ?> Zdefiniowano połączenie dla użytkownika 'jan' z hasłem haslo. Jeśli połączenie nie zostanie zrealizowane, wyświetli się komunikat i skrypt zakończy działanie. ZAPYTANIA DO BAZY Po nawiązaniu połączenia z wybraną bazą danych można wysyłać do niej zapytania. są one realizowane za pomocą funkcji mysqli_query(): mysqli_query('zapytanie', ['identyfikator']); Argumentem funkcji jest treść zapytania. Opcjonalnie można podać drugi argument określający identyfikator połączenia. while ($wiersze = ZAPYTANIE POBIERAJĄCE DANE Dla zapytań pobierających dane typu SELECT zwracany jest identyfikator zasobów. Może on być wykorzystany do odczytania tych danych. Do ich odczytania można użyć funkcji mysqli_fetch_row() lub mysqli_fetch_array(). Funkcja mysqli_fetch_row() odczytuje jeden wiersz tabeli i zapisuje w kolejnym wierszu tablicy. Jeśli brak jest wiersza - zwraca false. Aby odczytać całą tablicę korzystamy z pętli: while($wiersz=mysqli_fetch_row($wynik){ //przetwarzanie zapytania } Funkcja mysqli_fetch_rows() zwraca jako wartość liczbę wierszy znajdujących się w wyniku zapytania. Przykład $ile= mysqli_fetch_rows($wynik); while($wiersz=mysqli_fetch_row($wynik){ //przetwarzanie zapytania } Funkcja mysqli_fetch_array() odczytuje całą tabelę i zwraca tablicę asocjacyjną. Kluczami są nazwy kolumn zwróconej przez zapytanie tabeli KLAUZULA WHERE Klauzula WHERE jest dodawana do instrukcji SELECT wtedy, gdy należy wybrać tylko te wiersze, które spelniają określone kryterium. Przykład <?php $do_bazy=mysqli_connect("localhost", 'jan', 'haslo'); if(!$do_bazy){ exit("Błąd połączenia z serwerem MySQL."); } else{ if(!mysqli_select_db('ksiegarnia', $do_bazy)){ mysqli_close(); exit("Błąd podczas wyboru bazy danych."); } $zapytanie=mysqli_query("SELECT * FROM Klient WHERE Nazwisko='Nowak'"); if (!$zapytanie===true){ mysqli_close(); exit("Błąd w zapytaniu."); } while($tab = mysqli_fetch_array($zapytanie)){ echo $tab['nazwisko']." ".$tab['imie']; echo '<br>'; } } ?> Zwrócone zostaną dane osób, które mają nazwisko Nowak. ZAPYTANIE WSTAWIAJĄCE DANE Za pomocą funkcji mysql_affected_rows() można odczytać, ile wierszy zostało zmodyfikowanych przez zapytanie: mysql_affected_rows([identyfikator]) Argument identyfikator jest opcjonalny i zawiera identyfikator połączenia z serwerem. Jeśli zostanie pominięty, działania dotyczą ostatniego połączenia. Zapytanie dodające nowe dane do tabeli jest relizowane przez polecenie INSERT INTO. Przykład. <?php $do_bazy=mysqli_connect("localhost", 'jan', 'haslo'); if(!$do_bazy){ exit("Błąd połączenia z serwerem MySQL."); } if(!mysqli_select_db('ksiegarnia', $do_bazy)){ mysqli_close(); exit("Błąd podczas wyboru bazy danych."); } $dodaj="INSERT INTO Klient VALUES(NULL,'Joanna','Liszcz','25-900','Radom')"; if (!$zapytanie=mysqli_query($dodaj)){ mysqli_close(); exit("Błąd w zapytaniu."); } $ile=my_affected_rows(); echo "Liczba dodanych rekordów do tabeli Klient wynosi: $ile<br>"; mysqli_close(); ?> AKTUALIZOWANIE DANYCH Aktualizowanie danych jest realizowane poprzez instrukcję UPDATE. TWORZENIE BAZY DANYCH Do tworzenia bazy danych jest używana instrukcja SQL CREATE DATABASE. Należy ją dołączyć do funkcji mysql_query(). TWORZENIE TABELI Do tworzenia tabeli w istniejącej bazie danych jest używana instrukcja SQL CREATE TABLE. Należy ją dołączyć do funkcji mysql_query(). Przykład CBA Założenia. nazwa serwera: mysql.cba.pl nazwa użytkownika: CuriiBK hasło: xxxxxx //Twoje hasło <?php $servername = "mysql.cba.pl"; $username = "CuriiBK"; $password = "xxxxxxxx"; //twoje haslo // użytkownik $conn = mysqli_connect($servername, $username, $password); if (mysqli_connect_errno()) { echo "Blad polaczenia do MySQL: " . mysqli_connect_error(); } // Sprawdzanie polaczenia if (!$conn) { die("Polaczenie nieudane: " ); } echo "Polaczono z serwerem BAZY DANYCH"; ?> Zadania - polecenie Wykonać zadania (przykłady) przedstawione w treści dla lokalnie zainstalowanego komputera (XAMPP) oraz dla bazy umieszczonej na serwerze zewnętrznym (np. hostingu cba). W pierwszym przypadku dostarczyć skrypty php.