Nawiązanie połączenia z bazą danych to podstawa podczas pisania aplikacji internetowej, sklepu czy strony. Pokażę jak połączyć się z bazą danych i dlaczego akurat w taki sposób.
Wiem, że to żaden odkrywczy wpis, jednak w sieci jest sporo artykułów, które pokazują jak nawiązać połączenie i…. robią to wykorzystując mysql_connect. Chcę powiedzieć na wstępie: zapomnij o mysql_connect i przejdź do PDO, który jest jednym z punktów wpisu.
mysql_connect
Już na wstępie zaznaczam – nie używaj tej funkcji! Aby artykuł był „wyczerpany” musiałem o tym napisać. To przestarzałe rozwiązanie
- nie działa w PHP7 – a przecież chcemy korzystać z dobrodziejstw nowych wersji PHP 🙂
- proceduralne podejście
- brak bindowania parametrów (możliwy SQL-Injection)
mysqli_connect
Podejście proceduralne:
<?php
$host = 'localhost';
$username = 'username';
$password = 'password';
$dbName = 'dbName';
$conn = mysqli_connect($host, $username, $password, $dbName);
Jak widać, korzystamy po prostu z funkcji wbudowanej w PHP i połączenie zostało nawiązane. Oczywiście o ile podane dane są poprawne.
Podejście obiektowe:
<?php
$host = 'localhost';
$username = 'username';
$password = 'password';
$dbName = 'dbName';
$conn = new mysqli($host, $username, $password, $dbName);
Tworzymy nowy obiekt, a jako parametry konstruktora podajemy host, nazwę użytkownika, hasło i nazwę bazy danych.
Cechy mysqli_connect:
- działa z PHP7
- wspiera tylko bazę danych MySQL
- wspiera prepare statement (zabezpiecza przed SQL-Injection)
PDO
Zalecam polubienie się z PDO na początku Twojej przygody z PHP 🙂
Jak nawiązać połączenie z bazą danych wykorzystując PDO?
<?php
$host = 'localhost';
$username = 'username';
$password = 'password';
$dbName = 'dbName';
$conn = new PDO("mysql:host=$host;dbname=$dbName", $username, $password);
Tworzymy nowy obiekt z danymi do połączenia: host, nazwa bazy danych, nazwa użytkownika oraz hasło:
Cechy:
- wspiera 12 baz danych
- wspiera named parameters – łatwiejsze bindowanie wartości w zapytaniu
- wspiera prepare statement (zabezpiecza przed SQL-Injection)
Lista wspieranych baz danych przez PDO
- CUBRID
- MS SQL Server
- Firebird
- IBM
- Informix
- MySQL
- MS SQL Server
- Oracle
- ODBC and DB2
- PostgreSQL
- SQLite
- 4D