Podstawy MySql MySQL jest obecnie najpopularniejszym silnikiem relacyjnych baz danych i zarazem jednym z szybszych, udostępnianym na licencji GPL. Do komunikacji z innymi programami używa standardowego języku zapytań (SQL) wraz z własnymi rozszerzonymi jego funkcjami. Połączenie z bazą danych: $sql_conn = mysql_connect('serwer.com', 'admin', 'passwd') Zakończenie połączenia z bazą mysql_close([identyfikator_połączenia]); Aby wykonać jakiekolwiek operacje na swojej bazie danych należy wysłać do niej informacje o tym co chcemy zrobić. Wszystkie informacje wysyłamy w postaci zapytań, do czego wykorzystujemy PHPową funkcję mysql_query([zapytanie]); Zapytania do bazy danych wysyłamy w następujący sposób: $zaptanie = "treść zapytania SQL"; $idzapytania = mysql_query($zapytanie); Zmienna $idzapytania będzie zawierała identyfikator zapytania o ile zapytanie zostanie wykonane pomyślnie. W przypadku, gdy popełniliśmy błąd w zapytaniu zmienna $idzapytania będzie zawierała wartość false. 1. Tworzenie tabeli $zapytanie = 'CREATE TABLE studenci (id int NOT NULL AUTO_INCREMENT, imie char(30), nazwisko char(50), rok_studiow char(3), wiek char(3), PRIMARY KEY(id))'; 2. Dodawanie wiersza do tabeli $zapytanie = "INSERT INTO `studenci` (`id`, `imie`, `nazwisko`, `rok_studiow` , `wiek`) VALUES ('', 'Jan', 'Kowalski', '1', '23')"; 3. Wybieranie danych z tabeli $zapytanie = "SELECT `imie`,`nazwisko` FROM `studenci` WHERE `rok_studiow`='1'"; Wybieranie danych z tabeli z wyświetleniem ich w tabeli: $zapytanie = "SELECT `id`,`nazwisko`,`imie`,`rok_studiow` FROM `studenci`"; $idzapytania = mysql_query($zapytanie); echo '<table>'; while ($wiersz = mysql_fetch_row($idzapytania)) { echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td></tr>'; } echo '<table>'; 4. Aktualizacja rekordów $zapytanie = "UPDATE `studenci` SET `rok_studiow` = '2',`wiek` = '25' WHERE `id`='1'"; 5. Usuwanie rekordów $zapytanie = "DELETE FROM `studenci` WHERE `nazwisko`='Kowalski'"; Przykład 1 // połączenie się lokalnym serwerem bazy MySQL $sql_conn = mysql_connect('localhost', 'admin', 'passwd') // w przypadku niepowodzenia połączenia zakończ aplikację or die('Nie mogłem połaczyć się z bazą danych'); // jeśli nie mamy jeszcze bazy to musimy ją utworzyć mysql_create_db('zawodnicy'); // wybieramy bazę danych mysql_select_db('zawodnicy'); // tworzymy tabelę nba $zapytanie = 'CREATE TABLE nba (id int NOT NULL AUTO_INCREMENT, nazwisko char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY KEY(id))'; $idzapytania = mysql_query($zapytanie); // dodajemy troche przykładowych danych $zapytanie = "INSERT INTO `nba` (`id`, `nazwisko`, `lata`, `punkty` , `mistrzostwa`) VALUES ('', 'Jordan', '13', '258', '48')"; $idzapytania = mysql_query($zapytanie); $zapytanie = "INSERT INTO `nba` (`id`, `nazwisko`, `lata`, `punkty` , `mistrzostwa`) VALUES ('', 'Pipen', '10', '123', '32')"; $idzapytania = mysql_query($zapytanie); $zapytanie = "INSERT INTO `nba` (`id`, `nazwisko`, `lata`, `punkty` , `mistrzostwa`) VALUES ('', 'O\'Neal', '10', '205', '50')"; $idzapytania = mysql_query($zapytanie); // wyświetlamy treść naszej tabeli $zapytanie = "SELECT `id`,`nazwisko`,`lata`,`punkty` FROM `nba`"; $idzapytania = mysql_query($zapytanie); echo '<table>'; while ($wiersz = mysql_fetch_row($idzapytania)) { echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td></tr>'; } echo '</table>'; // zamykamy połączenie mysql_close($sql_conn); Poniżej kilka przydatnych funkcji w PHP: mysql_num_rows($wynik_zapytania) - zwraca ilość wierszy zwróconych przez zapytanie mysql_num_fields($wynik_zapytania) - zwraca ilość pól zwróconych przez zapytanie mysql_list_dbs($polaczenie) - zwraca wszystkie nazwy baz znajdujących się na serwerze mysql_connect(host,uzytkownik,hasło) - połączenie z bazą danych mysql_query($zapytanie) - wykonanie zapytania do bazy danych Porcjowanie danych na stronie SELECT nazwa_pola FROM nazwa_tabeli LIMIT pozycja, ilosc Pierwszy argument pozycja określa pozycje w zbiorze wyników zapytań. Drugi argument ilość określa ilość wyświetlanych rekordów. Czyli jeśli jako pierwszy argument wstawimy 0 a jako drugi 10 to zapytanie zwróci dziesięć pierwszych rekordów, jeśli jako pierwszy argument podamy 10, a jako drugi 10 to zapytanie zwróci kolejne dziesięć wierszy itd. Kompletny przykład kodu PHP: $strona = $_GET['s']; // Wynikow Na Strone $wns = 10; settype($strona, "integer"); $tresc_zapytania_max = 'SELECT `id` FROM `nba`'; $zapytanie_max = mysql_query($tresc_zapytania_max); // $r_max zawiera ilosc wszystkich rekordow w tabeli $r_max = mysql_num_rows($zapytanie_max); $tresc_zapytania = 'SELECT `nazwisko`, `punkty` FROM `nba` ORDER BY `nazwisko` LIMIT '.($strona*$wns).','.$wns; $zapytanie = mysql_query($tresc_zapytania); while ($wiersz = mysql_fetch_row($zapytanie)) { echo 'Gracz '.$wiersz[0].' zdobył '.$wiersz[1].' puntów(y).'; } $lStron = ceil($r_max/$wns); for ($i=0;$i<$lStron;$i++) echo ''.($i+1).''; Złączenie tabel • INNER JOIN – łączenie tabel przy wyświetlaniu W tabelach przechowujemy różne dane, takie jak: pensje, adresy, czy stanowiska. Co w przypadku kiedy chcielibyśmy wyświetlić te dane w jednej tabeli ? Możemy tego dokonać stosując operator INNER JOIN (złączenie wewnętrzne tabel) razem z poleceniem SELECT, które złączy wskazane przez nas tabele i kolumny. Polecenie będzie miało wtedy następującą składnie: SELECT lista_kolumn FROM nazwa_tabeli INNER JOIN nazwa_tabeli_2 ON warunek_złączenia Przykład: Zadaniem naszym jest wyświetlenie w jednej tabeli następujących danych: „id_pracownika”, „imie”, „nazwisko” oraz „adres_email”. Trzy pierwsze dane znajdują się w tabeli „pracownik”, zaś adres email w tabeli „adresy”. Wspólnym polem dla obu tabel jest „id_pracownika” i to ono posłuży nam do złączenia tabel następującym poleceniem: SELECT pracownik.id_pracownika, imie, nazwisko, adres_email FROM pracownik INNER JOIN adresy ON pracownik.id_pracownika = adresy.id_pracownika Przykładowy wynik id_pracownika imie nazwisko adres_email 12008 Jan Kowalski [email protected] 22008 Adam Nowakowski [email protected] 32008 Kasia Kowalska NULL W trzecim rzędzie pole adresu ma wartość NULL, ponieważ nie zawierało w bazie danych adresu email. Warunek złączenia: pracownik.id_pracownika = adresy.id_pracownika składa się z nazwy_pierwszej_tabeli.wspolna_kolumna = nazwa_drugiej_tabeli.wspolna_kolumna. Jeżeli chcielibyśmy do tej tabeli dołączyć jeszcze informacje na temat stanowiska pracownika przechowywane w polu „stanowisko” w tabeli „stanowiska” polecenie miałoby następującą formę: SELECT pracownik.id_pracownika, imie, nazwisko, adres_email, stanowisko FROM pracownik INNER JOIN adresy ON pracownik.id_pracownika = adresy.id_pracownika INNER JOIN stanowiska ON pracownik.id_pracownika = stanowiska.id_pracownika Przykładowy wynik id_pracownika imie nazwisko adres_email stanowisko 12008 Jan Kowalski [email protected] przedstawiciel handlowy 22008 Adam Nowakowski [email protected] księgowa 32008 Kasia Kowalska NULL kasjer W języku SQL mamy jeszcze następujące rodzaje złączeń: LEFT OUTER JOIN – lewostronne złączenie zewnętrzne, które zwraca wszystkie wiersze po lewej stronie klauzuli JOIN, zaś z tabeli po prawej stronie tylko wiersze dla których warunek złączenia jest prawdziwy. W przypadku kiedy wiersz z lewej tabeli nie ma odpowiadającego mu wiersza z prawej tabeli to odpowiednie pola zostają wypełniane wartością NULL. RIGHT OUTER JOIN – prawostronne złączenie zewnętrzne funkcjonuje w analogiczny sposób. Kursy MySql linki: http://www.sql-kursy.pl/mysql-podstawy-mysql-create_table.html http://webmaster.helion.pl/index.php/kurs-mysql http://webmade.org/kursy-online/kurs-mysql.php i inne…