PHP i MySQL – jak połączyć się z bazą danych i pobrać z niej dane

W celu połączenia się z bazą danych mySQL przy użyciu języka PHP wpierw musimy ustanowić połączenie. Aby tego dokonać należy utworzyć egzemplarz klasy mysqli poniższym poleceniem:

$con = new mysqli("serwer","user","hasło","baza","port","socket");

Jeżeli korzystasz ze standardowych ustawień serwera mysql parametry takie jak “port” czy “socket” możesz pominąć.

Zatem załóżmy, że nasz serwer znajduje się pod adresem: 127.0.0.1, nasz użytkownik to: root, jego hasło to RooThaslo, a baza z którą chcemy się połączyć to nauka. Polecenie zatem wyglądać będzie następująco:

$con = new mysqli("127.0.0.1","root","RooThaslo","nauka");

W poniższych przykładach będziemy wykorzystywali tabelę pracownicy, która znajduje się w bazie danych nauka.

tabela: pracownicy

Przejdźmy teraz do wykonania zapytania, pobrania danych i sprawdzenia ewentualnych błędów.

Przykład 1 (przy użyciu funkcji: fetch_array)

W naszym zapytaniu chcielibyśmy pobrać wyniki takie jak: imię, nazwisko i stawkę godzinową. Dane będą zwracane w kolejnych wierszach, a pola będą rozdzielane średnikami. Nasz SQL wyglądać będzie następująco:

SELECT imie, nazwisko, stawka FROM pracownicy;

Zatem będzie wyglądał nasz kod PHP:

<?php
$con = new mysqli("127.0.0.1","root","RooThaslo","nauka");

$q="SELECT imie, nazwisko, stawka FROM pracownicy";

if($wynik=$con->query($q))
while($row=$wynik->fetch_array())
echo $row["imie"] . ";" . $row["nazwisko"] . ";" . $row["stawka"] . "<br/>";
else
echo $con->errno . " " . $con->error;
?>

W wyniku powyższego zapytania otrzymaliśmy dane jak poniżej:

Stefan;Nowak;20.50
Jan;Kowalski;12.36

Za pomocą: $wynik=$con->query($q) wykonaliśmy zapytanie SQL przechowywane pod zmienną $q, a następnie jego wynik przypisaliśmy do zmiennej $wynik. W kolejnym kroku przy pomocy pętli whlie i funkcji fetch_array zwróciliśmy poszczególne wiersze z wynikami w formie tablicy i przypisaliśmy do zmiennej $row. Pozostało już tylko wyświetlić zwrócone wiersze podając zmienną $row oraz jako parametr nazwę pola z bazy danych wraz z separatorem ;.

Przykład 2 (przy użyciu funkcji: fetch_object)

<?php
$con = new mysqli("127.0.0.1","root","RooThaslo","nauka");

$q="SELECT imie, nazwisko, stawka FROM pracownicy";

if($wynik=$con->query($q))
while($row=$wynik->fetch_object())
echo $row->imie . ";" . $row->nazwisko . ";" . $row->stawka . "<br/>";
else
echo $con->errno . " " . $con->error;
?>

W powyższym przykładzie skorzystaliśmy z funkcji fetch_object, która zwraca wyniki w formie obiektu. W tym przypadku, aby odczytać dane musimy w posłużyć się nazwą $row znakiem -> oraz nazwą pola bazy danych, co daje nam w rezultacie np: $row->imie.

W obu powyższych przykładach przy funkcji if dodaliśmy jeszcze:

else
echo $con->errno . " " . $con->error;

Funkcja ta zwróci nam komunikat w postaci numeru i opisu błędu jeżeli taki wystąpi. Zwrócony błąd może dotyczyć np: błędnej konfiguracji połączenia z bazą danych, bądź błędów w zapytaniu SQL takich jak błąd składni, nieprawidłowe nazwy kolumn bądź tabel.