Jednym z głównych zadań realizowanych przez relacyjne bazy danych jest umożliwienie operacji typu SELECT, a wiec pobierania umieszczanych w niej informacji. Operacji takich można wykonywać po połączeniu z bazą danych za pośrednictwem danego klienta (takiego jak aplikacja PHP) o ile użytkownik, za pomocą którego wykonujemy połączenie, posiada uprawnienia do pobierania określonego rodzaju danych. W tym artykule skupimy się na bezpiecznym pobieraniu danych z bazy MySQL przy użyciu dwóch prawdopodobniej najbardziej popularnych metod, a więc:
Aplikacji phpMyAdmin
oraz
Aplikacji PHP.
Za pośrednictwem interpretowanego po stronie serwera języka PHP możemy połączyć się do bazy przy użyciu funkcji mysqli_connect. Aby wykonać taką operację w sposób kompleksowy, rozważmy poniższy kod:
Listing nr 1:
<?php
$baza=mysqli_connect("mojhost.pl","mojuser","mojehaslo","mojabaza");
if (mysqli_connect_errno())
{echo "Wystąpił błąd połączenia z bazą";}
$wynik = mysqli_query($baza,"SELECT * FROM Produkty");
while($row = mysqli_fetch_array($wynik))
{echo $row['Nazwa'] . " " . $row['Cena']; echo "<br>"; }
mysqli_close($baza);
?>
W powyższym listingu występuje kilka zmiennych oraz kilka niezbędnych funkcji PHP. Zmienna $baza odpowiada za połączenie z bazą danych. Używa do tego wspomnianej w poprzednim akapicie funkcji mysqli_connect, która, aby działać bezproblemowo, powinna mieć poprawnie uzupełnione następujące wartości (separowane spacją: nazwa hosta bazy danych, nazwa użytkownika bazy danych, hasło użytkownika bazy danych, nazwa bazy danych). W dalszej kolejności skrypt sprawdza przy użyciu konstrukcji warunkowej if, czy połączenie zostało nawiązane poprawnie (wybrana baza danych odpowiada). Jeżeli nie, wyświetla błąd. Wiersz numer cztery można zastąpić bardziej rozbudowanym, wyświetlającym również zwrotkę funkcji mysqli_connect_error (opis błędu, pozwalający na jego ułatwioną diagnozę i poprawę), obsługiwanej w wersji języka 5+. Tak rozbudowany wiersz przyjmuje poniższą konstrukcję:
{echo "Wystąpił błąd połączenia z bazą" . mysqli_connect_error();}
Jeżeli połączenie zostało nawiązane poprawnie, wykonywana jest komenda sql przypisana do zmiennej $wynik. Zmienna ta realizuje wyrażenie mysqli_query($baza,"SELECT * FROM produkty"). Mysqli_query, jak w przykładzie powyżej, wymaga podania dwóch informacji: zdefiniowanego połączenia do bazy danych (realizowane za pomocą zmiennej $baza) oraz zapytania SQL podanego w cudzysłowie. W naszym przypadku jest to "SELECT * FROM produkty". Oznacza ono pobranie wszystkich danych z tabeli produkty.
Kolejnym elementem skryptu jest wyświetlenie danych przy użyciu prostej składni języka HTML. W powyższym przykładzie wyświetlona zostanie zawartość kolumn o nazwach: Nazwa oraz Cena. Pobrane elementy (pętla zostanie wykonane dla każdego elementu w tabeli) zostaną oddzielone znacznikiem HTML <br>, odpowiadającym za łamanie wiersza.
Skrypt kończy się funkcją mysqli_close($baza). Odpowiada ona za zamknięcie połączenia z bazą otwartego w zmiennej $baza. Zastosowanie tej zmiennej daje pewność, że połączenie działa jedynie w ramach tego konkretnego skryptu i nie będzie realizowane w dalszych skryptach PHP.
Ale dane z bazy danych MySQL można również pobierać z poziomu phpMyAdmina: aplikacji umożliwiającej bezpośredni dostęp do bazy.
Dane za pośrednictwem tego programu można wybierać w kilku celach takich jak:
Stworzenia całościowej lub fragmentarycznej kopii bazy danych,
Przekazania kodu do INSERTOWANIA w innej bazie danych,
Eksportu całości danych (np. tekstów) do ich późniejszej obróbki.
Bez względu na cel, działając z poziomu phpMyAdmina, początek operacji działania jest zawsze taki sam. Na początku musimy wkleić w pasek URL przeglądarki internetowej konkretny adres łączący nas do aplikacji, lub kliknąć w łączę do niego prowadzące (np. z poziomu DirectAdmina).
Następnie, po otwarciu phpMyAdmina, należy zalogować się jako wybrany użytkownik. Może być to ten sam użytkownik, którego wybieramy z poziomu języka PHP w funkcji mysqli_connect. Po zalogowaniu wybieramy bazę danych, która nas interesuje (w panelu po lewej stronie), a następnie klikamy opcję „SQL”. W wyniku opisanych działań otwarte zostanie poniższe okno:
Screen nr 1:
W powyższym divie (screen nr 1) możemy umieścić dowolną komendę SQL, w tym komendy typu SELECT. Umożliwi nam ona wybranie dowolnych danych z poziomu wiersza poleceń SQL.
Alternatywną metodą wybierania danych jest panel eksportu, widoczny poniżej (screen nr 2):
Screen nr 2:
Dzięki powyższemu interfejsowi istnieje możliwość szybkiego eksportu wybranych danych (np. danych z wybranej kolumny lub danych / struktury całej bazy) w jednym z dozwolonych formatów: CodeGen, CSV, formatu Microsoft Word, YAML, JSON, LaTeX, CSV dla MS Excel, Tabela MediaWiki, PDF, XML, tablicy PHP, SQL oraz innych.
Pobrania danych możemy wykonać w jednym z dwóch trybów: szybkim lub dostosowywanym do potrzeb. W przypadku wyboru tego drugiego mamy możliwość, oprócz formatu, zdefiniowania kilkunastu dodatkowych kryteriów takich jak:
- zakres wybieranych danych,
- metoda wyświetlenia danych (jako tekst lub jako plik pobierany na dysk),
- kodowanie znaków,
- formatu kompresji
oraz innych.
Autor: http://www.datalab.pl/