Jednoduchý prevod z PHP funkcie mysql na pdo

Od PHP verzie 7 a viac (mimochodom mnohí komerční poskytovatelia webhostingu postupne eliminujú nižšie verzie PHP) sú mysql_* funkcie nepodporované a akékoľvek pripojenie k databáze a výber údajov z nej je potrebné nahradiť, napríklad funkciami pdo_*. V praxi sa stretávam s častou požiadavkou kontinuálnej prevádzky starších aplikácií a s potrebou jednoduchého / nenáročného prechodu zo zastaralého mysql_* na podporované pdo_*. Takmer vždy je požadovaný prechod bez veľkých zmien v zdrojových kódoch, ktoré by boli náročné nielen na čas, ale aj peniaze.

Naviac pri rozsiahlejších zmenách v zdrojovom kóde a prispôsobovaním systému na PDO je možno lepšie spraviť úplne celú web aplikáciu nanovo. Nižšie je ten istý dopyt na výber údajov z databázy pomocou dvoch rôznych funkcií.

PDO ukážka jednouchého výberu

<?php
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch())
{
echo $row['name']."<br />";
}
?>

MySQL ukážka jednoduchého výberu

<?php
$smtp = mysql_query("SELECT * FROM `users`") or die(mysql_error()); 
while ($row=mysql_fetch_array($smtp))
{
echo $row['name']."<br />";
}
?>

Ako vidíme, hoci logika je úplne rovnaká, syntax je predsa mierne odlišná. Našťastie existuje jednoduché riešenie na rýchlu zmenu zo zastaralej mysql_* (v nových verziách PHP už nepodporovanej) na PDO. Po dlhšom hľadaní sa mi podarilo objaviť existujúcu knižnicu, ktorá perfektne funguje a je overená na viacerých starších weboch.

http://fossil.include-once.org/upgradephp/finfo?name=ext/contrib/pdo_mysql.php

Postup implementácie je približne nasledovný:

1) Na začiatku dokumentu – najlepšie priamo v index.php pripojíme skript s definovanou triedou prevodu mysql_* na pdo_*

<?php
include(pdo_mysql.php);
?>

2) použitím textového editora v jednotlivých dokumentoch vyhľadáme všetky (Find all) výskyty spojenia mysql_* a nahradíme ich (Replace all) spojením pdo_*. Vhodný je PSpad, alebo Macromedia Dreamweaver.

3) to je skutočne všetko.

V prípade, že systém sa po zmene nevie napojiť na databázový server, je treba nakonfigurovať spojenie na databázu takto:

<?php
$pdo = new PDO("mysql:host=localhost;port=3306;dbname=nazovdatabazy", "login", "heslo");
?>

Nasadením takejto knižnice do systému je zabezpečená nezávislosť na PHP verzii a aj stará aplikácia po jednoduchej zmene môže bežať na serveroch s najnovšou verziou PHP bez väčších problémov. Pokiaľ by ste mali záujem o podobnú službu migrácie, kontaktujte ma.

Pridať komentár k článku