PHP 5 i później może pracować z bazą danych MySQL za pomocą:
- MySQLi rozszerzeń (the "i" stands for improved)
- PDO (PHP Data Objects)
Wcześniejsze wersje PHP używane rozszerzenie MySQL. Jednak to rozszerzenie została zaniechana w 2012 roku.
Należy użyć mysqli lub PDO?
Jeśli potrzebujesz krótkiej odpowiedzi, to byłoby "Whatever you like" .
Zarówno MySQLi i PDO mają swoje zalety:
PDO będzie działać na 12 różnych systemów baz danych, gdzie jako MySQLi będzie działać tylko z bazami danych MySQL.
Tak więc, jeśli musisz przełączyć swój projekt, aby użyć innej bazy danych PDO sprawia, że proces łatwy. Trzeba tylko zmienić ciąg połączenia i kilka zapytań. Z MySQLi, trzeba będzie przepisać cały kod - pytania zawarte.
Oba są zorientowane obiektowo, ale MySQLi oferuje także API proceduralną.
Oba obsługują sporządzanych sprawozdań. Przygotowane sprawozdania chronić przed SQL injection i są bardzo ważne dla bezpieczeństwa aplikacji internetowych.
Przykłady MySQL w obu MySQLi i składni PDO
W tym i w następnych rozdziałach pokażemy trzy sposoby pracy z PHP i MySQL:
- MySQLi (object-oriented)
- MySQLi (procedural)
- PDO
Instalacja MySQLi
Dla systemów Linux i Windows: Rozszerzenie MySQLi jest automatycznie instalowany w większości przypadków, gdy jest zainstalowany pakiet php5 mysql.
Szczegóły dotyczące instalacji, przejdź do: http://php.net/manual/en/mysqli.installation.php
Instalacja PDO
Szczegóły dotyczące instalacji, przejdź do: http://php.net/manual/en/pdo.installation.php
Otwiera połączenie do serwera MySQL
Zanim będziemy mogli uzyskać dostęp do danych w bazie danych MySQL, musimy być w stanie połączyć się z serwerem:
Przykład (MySQLi Object-Oriented)
<?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 na przykład obiektowego powyżej: $ connect_error został złamany aż PHP 5.2.9 i 5.3.0. Jeśli potrzebujesz, aby zapewnić zgodność z wersjami PHP przed 5.2.9 i 5.3.0, należy użyć następującego kodu:
// Sprawdź połączenia
jeśli ( mysqli_connect_error() ) {
die("Database connection failed: " . mysqli_connect_error() );
}
Przykład (MySQLi Procedural)
<?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();
}
?>
Zauważ, że w tym przykładzie PDO powyżej mamy również określić bazę danych (myDB) . PDO wymagać ważnej bazy danych, aby połączyć. Jeśli baza danych nie jest określony, jest wyjątek.
Wskazówka: Duża zaletą jest to, że PDO ma klasę wyjątku do obsługi wszelkich problemów, które mogą pojawić się w naszych zapytań do bazy danych. Jeśli jest wyjątek w próba {} bloku skrypt zatrzymuje wykonania i przepływa bezpośrednio do pierwszego catch() {} bloku.
Zamknąć połączenie
Połączenie zostanie automatycznie zamknięte, gdy skrypt kończy. Aby wcześniej zakończyć połączenie, należy użyć następujących czynności:
Przykład (MySQLi Object-Oriented)
$conn->close();
Przykład (MySQLi Procedural)
mysqli_close($conn);
Przykład (PDO)
$conn = null;