2012-12-16 13 views
5

Zgodnie z witryną PHP.net rozszerzenie MySQL jest przestarzałe od PHP 5.5+ Biorąc pod uwagę dużą liczbę stron PHP korzystających z MySQL, chciałbym wiedzieć, jakie najlepsze praktyki być dla istniejących stron używających MySQL. Czy ustabilizowałbyś swoją witrynę w wersji PHP obsługującej MySQL? Lub podjąć zobowiązanie kosztowe i czasowe, aby przeprowadzić migrację do innego rozszerzenia bazy danych?Przyszłość funkcji MySQL PHP

+1

To pytanie prawdopodobnie nie jest tematem dla Stack Overflow, ale jest dobrym pytaniem. –

+0

Zobacz ten wpis przedstawiający kilka powodów, dla których warto używać nowoczesnego mysqli: http://stackoverflow.com/a/8891552/716216 –

Odpowiedz

4

Rozszerzenie MySQL jest przestarzałe, a nie obsługa MySQL jako całości. PHP jest obecnie próbuje wcisnąć nowe rozszerzenie MySQLi jako zamiennik:

http://php.net/manual/en/book.mysqli.php

MySQLi ulepsza starych funkcji, co pozwala wykonywać funkcje MySQL proceduralnie (jak wyżej) lub z przedmiotami.

+0

Tak, znam tę część. PHP mogłoby znacznie ułatwić wdrożenie MySQLI, gdyby zachowały kolejność zmiennych w wywołaniach funkcji! –

2

Jak napisano na podręczniku PHP, http://php.net/manual/en/intro.mysql.php

To rozszerzenie jest przestarzała od PHP 5.5.0, i nie jest zalecane za pisanie nowego kodu, jak to będzie w przyszłości usunięta. Zamiast tego należy użyć rozszerzenia mysqli lub PDO_MySQL. Zobacz także Omówienie API MySQL , aby uzyskać dalszą pomoc przy wyborze interfejsu API MySQL.

Powinieneś używać mysqli.

+1

Przeczytaj ponownie pytanie, OP już to wie. – Paul

6

Jeśli masz czas programowania, gorąco polecam przeniesienie do PDO lub MySQLi. Te rozszerzenia będą utrzymywane i oficjalnie wspierane przez grupę PHP.

Jeśli twoja aplikacja jest naprawdę stabilna i bezpieczna, wówczas wyłączałbym ostrzeżenie generowane przez 5.5. Kiedy rozszerzenie zostanie usunięte, jestem pewien, że nadal będzie istnieć jako rozszerzenie PECL, które następnie będę zawierał.

4

Chciałbym wiedzieć, jakie będą najlepsze praktyki dla istniejących witryn korzystających z MySQL.

Ten można łatwo odpowiedzieć.
Nie powinno być żadnych funkcji Mysql (jak również Mysqli lub PDO) w kodzie aplikacji w ogóle.
Jeśli używasz surowych funkcji API jak ten

$data = array(); 
$name = mysql_real_escape_string($_GET['name']); 
$result = mysql_query("SELECT * FROM table WHERE name = '$name'"); 
while ($row = mysql_fetch_row($result)){ 
    $data[] = $row; 
} 

potem trzeba początek przepisywania kodów immediatey, stosując pewne opakowanie bazy zamiast surowych bezpośrednich wywołań API, aby wyglądał jak ten :

$data = $db->getAll("SELECT * FROM table where name=?s",$_GET['name']); 

to nie tylko skrócić i rozruszać swoje kody dramatycznie, ale również umieścić wszystkie wywołania API w jednej bibliotece, gdzie można go zmienić na cokolwiek nowego API gdy zespół PHP postanowił zabić kolejny doskonały ext.

+0

Dlaczego nie upwote-love? ext/mysql jest * bajeczny *. –