Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 3951 razy

PHP dostarcza niezbędnych funkcji do tworzenia połączenia z bazą danych mySql-a wraz z funkcją umożliwiającą wysyłanie zapytań do takowej bazy oraz z serią funkcji związanych z przetwarzaniem danych zawartych w danej tabeli bazy danych. W tym miejscu postanowiłem wymienić tylko kilka z nich.

Do połączenia się z bazą danych będą potrzebne następujące stałe, które zależne są od ustawień użytkownika.

DEFINE ('DBUSER', 'user_name'); DEFINE ('DBPASSWORD', 'user_password'); DEFINE ('DBHOST', 'your_host_name'); DEFINE ('DBNAME', 'database_name');

Łączenie się z bazą danych za pomocą przestarzałych funkcji PHP

Połączenie z bazą danych:

$db = @mysql_connect(DBHOST, DBUSER, DBPASSWORD) OR die('Nie mogłem połączyć się z MySQL-em: ' . mysql_error() ); @mysql_select_db(DBNAME) OR die('Nie udało mi się wybrać bazy danych: ' . mysql_error() ); mysql_query("SET NAMES utf8");

W powyższym kodzie wykorzystane zostały następujące funkcje:

$db = @mysql_connect(DBHOST, DBUSER, DBPASSWORD) OR die('Nie mogłem połączyć się z MySQL-em: ' . mysql_error() );

Powyższy fragment kodu używa funkcji @mysql_connect do nawiązania połączenia z mySql-em wynikiem czego powinien być uzyskany uchwyt bazy danych. Argumentami jest nazwa hosta zawarta w stałej DBHOST, nazwa użytkownika DBUSER oraz hasło DBPASSWORD. Gdy połączenie się nie powiedzie używana jest funkcja die, która wyświetli informacje o przyczynie zdarzenia poprzez wykorzystanie funkcji mysql_error().

@mysql_select_db(DBNAME) OR die('Nie udało mi się wybrać bazy danych: ' . mysql_error() );

Ustanawia połączenie z wybraną bazą danych DBNAME

mysql_query("SET NAMES utf8");

Funkcja mysql_query jest przeznaczona do wysyłania zapytań do bazy danych, w tym przypadku została wykorzystana do ustawienia sposobu kodowania danych pozyskiwanych z bazy danych (dzięki prawidłowemu kodowaniu powinny wyświetlać się polskie znaki).

Funkcja ta ma znacznie szersze zastosowania, gdyż może przesyłać dowolne zapytania do bazy danych, które spełniają warunki narzucone przez składnię zapytań mySql-a.

Typowym prostym przykładem zastosowania funkcji mysql_query jest użycie jej do uzyskania dostępu do danych zawartych w tabeli zawartej w bazie danych w sposób pokazany poniżej:

$customers = mysql_query("SELECT name FROM customers ORDER BY name ASC"); while($line=mysql_fetch_array($customers)){ echo('<div class="customer" >' . $line['name'] . '</div>'); }

W powyższym kodzie za pomocą funkcji mysql_query uzyskany został uchwyt do rekordów tabeli o nazwie customers, z której wyciągnięte zostały pole name w kolejności rosnącej (fragment kodu zapytania ORDER BY name ASC). Zwrócony uchwyt został wykorzystany w pętli while, gdzie użyta została funkcja mysql_fetch_array w celu wyciągnięcia pojedynczego rekordu do tablicy asocjacyjnej zwróconej do zmiennej $line. Gdy nie ma dostępnego rekordu funkcja zwraca false. Po uzyskaniu dostępu do rekordu za pomocą funkcji echo wyświetlany jest element tablicy asocjacyjnej $line['name'].

Istnieje również możliwość pozyskiwania liczby zwróconych rekordów poprzez zastosowanie funkcji mysql_num_rows w następujący sposób:

$cCount = mysql_num_rows(mysql_query("SELECT id FROM customers"));

Kończenie połączenia z bazą danych mySql wykonuje się za pomocą następującego kodu:

mysql_close($db);

Łączenie się z bazą danych za pomocą obiektu MySQLi w PHP

Nawiązywanie połączenia z bazą danych:

$con = @new MySQLi(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); $con->query("SET NAMES 'utf8'"); if($con->connect_errno != 0) { die("Nie udało się połączyć z bazą danych"); }

Wypisywanie zawartości tablicy zawartej w bazie danych:

$users = $con->query("SELECT id, name, surname FROM users"); // wysyłam zapytanie do bazy danych echo("<table>"); // Początek tabelki echo("<tr><td>Id</td><td>Imię</td><td>Nazwisko</td></tr>"); // nagłówek tabelki while($user = $users->fetch_assocs()){ echo("<tr><td>" . $user['id'] . "</td><td>" . $user['name'] . "</td><td>" . $user['surname'] . "</td></tr>"); // a tutaj wypisywanie danych do tabelki } echo("</table>") // i zamykanie tabelki

Kończenie połączenia z bazą danych:

$con->close();