PHP Połącz z MySQL
PHP 5 i nowsze wersje mogą współpracować z bazą danych MySQL przy użyciu:
- Rozszerzenie MySQLi ("i" oznacza ulepszone)
- PDO (obiekty danych PHP)
Wcześniejsze wersje PHP wykorzystywały rozszerzenie MySQL. Jednak to rozszerzenie zostało wycofane w 2012 roku.
Czy powinienem używać MySQLi czy PDO?
Jeśli potrzebujesz krótkiej odpowiedzi, będzie to „Cokolwiek chcesz”.
Zarówno MySQLi, jak i PDO mają swoje zalety:
PDO będzie działać na 12 różnych systemach bazodanowych, podczas gdy MySQLi będzie działać tylko z bazami danych MySQL.
Jeśli więc musisz przełączyć swój projekt na inną bazę danych, PDO ułatwia ten proces. Musisz tylko zmienić parametry połączenia i kilka zapytań. Z MySQLi będziesz musiał przepisać cały kod - w tym zapytania.
Oba są zorientowane obiektowo, ale MySQLi oferuje również proceduralne API.
Oba obsługują Przygotowane Oświadczenia. Przygotowane instrukcje chronią przed wstrzyknięciem SQL i są bardzo ważne dla bezpieczeństwa aplikacji internetowych.
Przykłady MySQL w składni MySQLi i PDO
W tym oraz w kolejnych rozdziałach przedstawiamy trzy sposoby pracy z PHP i MySQL:
- MySQLi (zorientowany obiektowo)
- MySQLi (procedura)
- ChNP
Instalacja MySQLi
Dla systemów Linux i Windows: Rozszerzenie MySQLi jest w większości przypadków instalowane automatycznie po zainstalowaniu pakietu mysql php5.
Aby uzyskać szczegółowe informacje dotyczące instalacji, przejdź do: http://php.net/manual/en/mysqli.installation.php
Instalacja PDO
Aby uzyskać szczegółowe informacje dotyczące instalacji, przejdź do: http://php.net/manual/en/pdo.installation.php
Otwórz połączenie z MySQL
Zanim uzyskamy dostęp do danych w bazie danych MySQL, musimy mieć możliwość połączenia się z serwerem:
Przykład (zorientowany obiektowo MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Uwaga dotycząca powyższego przykładu zorientowanego obiektowo:
$connect_error był zepsuty do PHP 5.2.9 i 5.3.0. Jeśli chcesz zapewnić zgodność z wersjami PHP starszymi niż 5.2.9 i 5.3.0, zamiast tego użyj następującego kodu:
// Sprawdź połączenie
if (mysqli_connect_error()) {
die("Połączenie z bazą danych nie powiodło się: " . mysqli_connect_error());
}
Przykład (procedura MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Przykład (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Uwaga: W powyższym przykładzie PDO określiliśmy również bazę danych (myDB) . PDO wymaga prawidłowej bazy danych do połączenia. Jeśli nie określono bazy danych, zostanie zgłoszony wyjątek.
Wskazówka: Wielką zaletą PDO jest to, że posiada klasę wyjątków, która obsługuje wszelkie problemy, które mogą wystąpić w naszych zapytaniach do bazy danych. Jeśli w bloku try{ } zostanie zgłoszony wyjątek, skrypt przestanie wykonywać i przejdzie bezpośrednio do pierwszego bloku catch(){ }.
Zamknij połączenie
Połączenie zostanie zamknięte automatycznie po zakończeniu skryptu. Aby wcześniej zamknąć połączenie, użyj:
MySQLi zorientowane obiektowo:
$conn->close();
Procedura MySQLi:
mysqli_close($conn);
ChNP:
$conn = null;