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() {}.
Затваряне на връзка към сървър с бази данни
Връзката ще се затвори автоматично когато скрипта приключи. За да затворим връзката предварително ползваме следния код: