Свързване с MySQL

PHP 5 и след тази версия може да работи с MySQL бази данни ползвайки:

  • MySQLi разширението („i“ идва от подобрен – improved)
  • PDO (PHP Data Objects)

Предходните версии на PHP ползват MySQL разширение. Обаче въпросното разширение е изключено и забранено от 2012 година.

Кое трябав да ползвам MySQLi или PDO?

Ако трябва да отговорим накратко – както искаме. И двете, и MySQLi и PDO си имат своите предимстав: PDO работи с 12 различни системи за бази данни, докато MySQLi може да работи само с MySQL бази данни. Ако трябва да превключим ползването на бази данни към друга система, PDO прави процеса лесен. Трябва само да променим начина за свързване и наяколко заявки. С MySQLi трябва да пренапишем целият код включително и заявките. И двете са обектно ориентирани/object-oriented/, но MySQLi също така разполага и с процедурно API/procedural/. И двете поддържат Prepared Statements. Тези изявления предпазват/защитават/ от SQL инжекции, и са много важни за сигурността в уеб приложенията.

MySQL примери при MySQLi и PDO синтаксис

В тази и следващи глави от урока ще демонстрирами 3 начина за работа с PHP и MySQL:

  • MySQLi (object-oriented)
  • MySQLi (procedural)
  • PDO

Инсталиране на MySQLi

За Linux и Windows: Разширението MySQLi в повечето случаи е инсталирано по подразбиране в момента на инсталиране на php5 mysql пакета. За детайли по инсталирането: http://php.net/manual/en/mysqli.installation.php

Инсталиране на PDO

За детайли по инсталирането: http://php.net/manual/en/pdo.installation.php

Отваряне на връзка за MySQL

Преди да можем да достъпваме данните в MySQL база данни, трябва да можем да се свържем със сървъра:


Пример (MySQLi Object-Oriented)


Пример (MySQLi Procedural)


Пример (PDO)

Забележете, че в горния пример с PDO също така сме посочили и конкретна база данни (myDB). PDO изисква валидна база данни, към която да се свързва. Ако няма зададена такава, хвърля изключение – генерира грешка/an exception is thrown/.

Обърнете внимание на следното:
Голяма полза от PDO е, че той има свой клас със изключения, за да се справи с всички проблеми, които могат да възникнат в заявките ни към базата данни. Ако се изхвърли изключение в try{} блока, скриптът спира изпълнението и тече директно до първия блок catch() {}.

Затваряне на връзка към сървър с бази данни

Връзката ще се затвори автоматично когато скрипта приключи. За да затворим връзката предварително ползваме следния код:


Пример (MySQLi Oh3ject-Oriented)


Пример (MySQLi Procedural)


Пример (PDO)