Изграждане на PHP връзка към MySQL

PHP 5 и следващите версии могат да работят с MySQL база данни, като използват разширение MySQLi (i означава подобрено – improved) или PDO (PHP Data Objects).

По-ранните версии на PHP използваха MySQL разширение (extension), което обаче бе премахнато през 2012 г.

Кой начин на свързване да ползваме – MySQLi или PDO?

Ако имате нужда от кратък отговор, той ще бъде – който Ви харесва повече.

Както MySQLi, така и PDO има своите предимства:

  • PDO работи върху 12 различни системи за база данни, докато MySQLi ще работи само с MySQL база данни.
  • Ако трябва да промените проекта си да ползва друга база данни, използването на PDO ще улесни процеса. Трябва само да промените кода за свързване и няколко заявки. В същата ситуация, ако ползвате MySQLi, ще трябва да пренапишете целия код заедно със заявките.
  • И двата метода са обектно-ориентирани, но MySQLi предлага и процедурен API интерфейс.
  • И двата метода поддържат Prepared Statements, които защитават от SQL инжекции и са много важни за сигурността на уеб приложенията.

В статията ще Ви покажем още как може да изградите връзка към MySQL база данни чрез MySQLi (обектно-ориентирана и процедурна) и чрез PDO синтаксис.

Пример с изграждане на 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 "MySQLi Object-Oriented Connected successfully";
?> 

Пример с изграждане на MySQLi връзка (Procedural-Oriented)

<?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 "MySQLi Procedural Connected successfully";
?> 

Пример с изграждане на 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 "PDO Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
?> 

Предимство на PDO разширението е, че има клас на изключения (exception), за да се справя с всички проблеми, които могат да възникнат в заявките към базата данни. Ако се получи изключение в try {} блока, скриптът спира изпълнението и намира директно първия catch () {} блок.

Тест на кода от примерите

За да тестваме дали кодът в примерите работи, създадохме база данни, потребител и парола в cPanel. Също така създадохме и файл mysql-connection.php, в който въведохме само кода без никакъв HTML, с един отварящ <?php и затварящ таг ?>. Между отделните блокове код вмъкнахме следния код, за да може статус съобщенията да бъдат на отделни редове:

echo "<br>";

Във файла заменихме database, username и password с информацията за нашата база данни.

успешно свързване

Затваряне на връзката към MySQL сървъра

Връзката към сървъра се затваря автоматично, след като всички команди в скрипта бъдат изпълнени. Добра практика е да се добави като последен ред команда за затваряне на връзката. Обърнете внимание, че синтаксисът на командите при различните методи е различен.

МетодКоманда
MySQLi Object-Oriented$conn->close();
MySQLi Proceduralmysqli_close($conn);
PDO$conn = null;
Обновена: 08.11.2021
Беше ли Ви полезна тази статия?

Вижте още