Łączenie się z bazą danych – PHP

Sposoby łączenia się z MySQL poprzez PHP

Aby mieć możliwość przechowywania danych w bazie danych MySQL i uzyskiwania do nich dostępu, należy po pierwsze połączyć się z serwerem bazy danych MySQL.

PHP oferuje nam dwa różne sposoby łączenia się z serwerem MySQL:

MySQLi (Improved MySQL) oraz rozszerzenie PDO (PHP Data Objects).

  • Różnice MySQLi i PDO

Podczas gdy rozszerzenie PDO jest bardziej przenośne i obsługuje więcej niż dwanaście różnych baz danych, rozszerzenie MySQLi, jak sama nazwa wskazuje, obsługuje tylko bazy danych MySQL. MySQLi zapewnia jednak łatwiejszy sposób łączenia się z serwerem bazy danych MySQL i wykonywania na nim zapytań. Zarówno PDO, jak i MySQLi oferują obiektowe API, ale MySQLi oferuje również proceduralne API, które jest stosunkowo łatwe do zrozumienia dla początkujących użytkowników.

Połączenia z serwerem bazy danych MySQL

W PHP możemy to łatwo zrobić używając funkcji mysqli_connect(). Cała komunikacja pomiędzy PHP a serwerem bazy danych MySQL odbywa się właśnie poprzez to połączenie.

Oto podstawowe składnie połączeń z MySQL przy użyciu rozszerzeń MySQLi oraz PDO

Składnia: MySQLi, Podejście proceduralne

$polaczenie = mysqli_connect("nazwa_hosta", "nazwa_uzytkownika", "haslo", "baza");

Składnia: MySQLi, Podejście obiektowe

$mysqli = new mysqli("nazwa_hosta ", " nazwa_uzytkownika ", " haslo ", "baza");

Składnia: PDO, Sposób PHP Data Objects (PDO) 

$pdo = new PDO("mysql:host=nazwa_hosta;dbname=baza", "nazwa_uzytkownika", "haslo");

Parametr nazwa_hosta w powyższej składni określa nazwę hosta (np. localhost) lub adres IP serwera MySQL, natomiast parametry nazwa_uzytkownika oraz haslo określają dane dostępowe do serwera MySQL, parametr baza, jeśli zostanie podany, określi domyślną bazę danych MySQL, która będzie używana podczas wykonywania zapytań.

Poniższy przykład przedstawia jak połączyć się z serwerem baz danych MySQL za pomocą MySQLi (zarówno w sposób proceduralny jak i obiektowy) oraz rozszerzenia PDO.

<?php
 /* Próba połączenia zakładając że ddziałający serwer MySQL jest w swoich ustawieniach domyślnych czyli użytkownik użytkownik root I brak hasła */

$polaczenie = mysqli_connect("localhost", "root", "");

// Sprawdzenie połączenia
if($polaczenie === false)
{
 die("BŁĄD: Nie udało się połączyć. " . mysqli_connect_error());
}

// Wyświetl informacje o hoscie 
echo "Połączono poprawnie. Informacje o hoscie: " . mysqli_get_host_info($polaczenie);

?>

<?php
 /* Próba połączenia zakładając że ddziałający serwer MySQL jest w swoich ustawieniach domyślnych czyli użytkownik użytkownik root I brak hasła */

$mysqli = new mysqli("localhost", "root", "", "demo");

// Sprawdzenie połączenia
if($mysqli === false)
{
die("BŁĄD: Nie udało się połączyć. " . $mysqli->connect_error);
}

// Wyświetl informacje o hoscie
echo "Połączono poprawnie. Informacje o hoscie: " . mysqli_get_host_info($link);

?>

<?php
 /* Próba połączenia zakładając że ddziałający serwer MySQL jest w swoich ustawieniach domyślnych czyli użytkownik użytkownik root I brak hasła */

try
{
    $pdo = new PDO("mysql:host=localhost", "root", "");          
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);          
// Wyświetl informacje o hoscie 
    echo "Połączono poprawnie. Informacje o hoscie: " .  $pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));
 }
 catch(PDOException $e)
{
     die("BŁĄD: Nie udało się połączyć. " . $e->getMessage());
}
?>

Zamykanie połączenia

Połączenie z serwerem bazy danych MySQL zostanie zamknięte automatycznie, gdy tylko zakończy się wykonywanie skryptu. Jeśli jednak chcesz zamknąć je wcześniej, możesz to zrobić wywołując odpowiednią funkcję.

mysqli_close($polaczenie); //MySQLi – proceduralnie

$mysqli->close(); //MySQLi – obiektowo

unset($pdo); // PDO

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *