Korzystam z funkcji PHP mysql_* i otrzymuję komunikat deprecated. Dlaczego?

Treść dodana: 08 grudnia 2015. Ostatnia modyfikacja: 22 czerwca 2016.

Od dobrych kilku lat na stronie dokumentacji PHP widnieje ostrzeżenie:

This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. 
Instead, the MySQLi or PDO_MySQL extension should be used. 
See also MySQL: choosing an API guide and related FAQ for more information.

Oznacza to ni mniej, ni więcej że od PHP 5.5.0 rozszerzenie przestało być wspierane i następowało powolne przygotowanie do jego usunięcia. Stało się tak, w wydanym niedawno PHP 7, w którym żadna z funkcji mysql_*() nie będzie już działać. W zamian powinno korzystać się z rozszerzenia MySQLi lub PHP Data Objects.

Ze swojej strony bardziej polecam PDO ponieważ stosuje się je we wszystkich dużych frameworkach i jest bardziej uniwersalne. Pisałem wcześniej artykuł o PDO – polecam jego przeczytanie. W skrócie przykładowe zapytanie przy użyciu PDO może wyglądać następująco (dla bazy danych MySQL):

<?php
// zapytanie zawierające "placeholder" czyli parametr przekazany do zapytania
$sql = 'SELECT id, name FROM users WHERE email = ?';

// nawiązanie połączenia z domyślnym kodowaniem UTF8
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, 
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

// przygotowanie wcześniejszego zapytania
$sth = $dbh->prepare($sql);

// bezpieczne bindowanie parametrów - zostanie podstawiony pod "placeholder" czyli znak zapytania
$sth->bindParam(1, $_POST['email']);

// wykonanie zapytania
$sth->execute();

// przypisanie do zmiennej $result tablicy zawierającej wszystkie wyszukane rekordy
$result = $sth->fetchAll();

// wyświetlanie
foreach ($result as $row) {
    echo $row['id'] . ':' . $row['name'];
}

Komentarze

Nie ma jeszcze żadnych komentarzy do wyświetlenia. Może chcesz zostać pierwszą osobą która podzieli się swoją opinią?

Dodaj komentarz

*
Nazwa zostanie wyświetlona wraz z komentarzem. Możesz też utworzyć nowe konto w serwisie, dzięki czemu uzyskasz dodatkową funkcjonalność.
*
Akceptowana jest ograniczona składnia Textile. Wszystkie tagi HTML zostaną usunięte.