Tworzymy grę, część 8: MySQL

Jerzy Biernacki
05.09.2015

VIII - MySQL

Przy każdej części poradnika korzystamy z bazy danych mysql. Za każdym razem jednak musimy od nowa ustanawiać połączenie z bazą. W tej części opiszę jak skrócić ten proces.

1. Include & Require
W php istnieją dwie bardzo pomocne funkcje. Mowa o funkcji include oraz require. Obie robią to samo - dołączają wskazany przez nas plik do uruchamianego skryptu. Różnią się jedynie obsługą błędów. Jeśli po użyciu require plik nie zostanie znaleziony to skrypt nie uruchamia się dalej. Po include przypadek taki zwróci tylko błąd.

<?php
  $dbh = mysql_connect("localhost", "login",   "haslo");
  mysql_select_db("gra");
  ?>

Tak dotychczas wyglądało nasze połączenie z bazą danych ustanawiane na początku każdego pliku. Można to jednak skrócić. Na początku naszego szkieletu strony czyli w moim wypadku index2.php oraz index.php należy wpisać

<?php
  include("mysql_connect.php"); // Dołączamy plik w, którym zaraz   połączymy się z bazą
  ?>

Jak ma wyglądać plik mysql_connect.php? Tak samo jak nasze dotychczasowe połączenie z bazą czyli

<?php
  $dbh = mysql_connect("localhost", "login",   "haslo");
  mysql_select_db("gra");
  ?>

2. MySQL? Z czym się to je?
Mysql to najczęściej używana baza danych. Jest ona stosunkowo prosta w użytku. Poniżej opiszę podstawowe operacje, które są używane przy tworzeniu gier via www.
2a. insert

"insert into `konta` values ('', 'Vielta')";

O co chodzi w powyższym poleceniu? Insert dodaje do tabeli (w tym wypadku `konta`) odpowiednie wartości wpisane po values. Oczywiście zapytanie to można rozwinąć np. tak

"INSERT INTO `konta` (`id`, `login`, `password`) VALUES ('', 'Vielta',   'haslo')";

To polecenie natomiast, doda rekord ale tylko do podanych wartości (id, login oraz password). Czym się różni pierwszy przykład od drugiego? W pierwszym musimy coś dodać do wszystkich pól w tabeli. W drugim natomiast możemy ustalić do których pól chcemy dodać wartości.

2b. select

"select `ID` from `konta` where `login` = 'Vielta'";

Polecenie select stworzone zostało by pobrać wartości z bazy danych. W tym wypadku pobieramy wartość ID z tabeli konta dla gracza Vielta. Co zrobić jeśli chcemy pobrać więcej niż jedno pole?

"select   `ID`, `password` from `konta` where `login` = 'Vielta'";

Wystarczy dodać przecinek i wpisać kolejne pole. Co zrobić natomiast jeśli mamy np. 60 pól w tabeli konta?

"select   * from `konta` where `login` = 'Vielta'";

Zapytanie to pobierze wszystko z tabeli konta dla gracza Vielta. Przy funkcji select używane jest polecenie mysql mysql_fetch_array(); lub mysql_fetch_row(); oraz mysql_num_rows();

2c. update

"update `konta` set `password` = 'inne_haslo' where `login` = 'Vielta'";

Polecenie update służy do aktualizowania rekordu/ów w bazie. Dla przykładu powyższe polecenie zmieni hasło użytkownika Vielta na inne_haslo. Jeśli chcemy zmodyfikować jakąś liczbę dla przykładu dodać 5 do siły gracza możemy posłużyć się taką techniką.

"update   `konta` set sila=sila+5 where `login` = 'Vielta'";

Doda to 5 sily do aktualnej wartości siły gracza Vielta.

2d. delete

"delete from `konta` where `login` = 'Vielta'";

Ostatnie z podstawowych poleceń używanych przy rekordach baz danych. Poleca ono na usunięciu z tabeli konta gracza o loginie Vielta

Oczywiście samo wpisanie powyższych przykładów NIE ZADZIAŁA. Potrzebne jest do tego ustanowione połączenie z bazą danych, wybrana baza danych a rekordy te muszą istnieć.

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie