2012-12-16 15 views
5

Secondo il sito Web PHP.net, l'estensione MySQL è obsoleta a partire da PHP 5.5+ Dato l'elevato numero di siti PHP che utilizzano MySQL, mi piacerebbe sapere quali sarebbero le migliori pratiche essere per siti esistenti utilizzando MySQL. Vuoi stabilizzare il tuo sito su una versione di PHP che supporta MySQL? O assumere l'impegno in termini di costi e tempi per migrare a un'altra estensione DB?Future of the PHP Funzioni MySQL

+1

Questa domanda probabilmente non è in tema per Stack Overflow, ma è una buona domanda da porre. –

+0

Vedere questo post elencando una serie di motivi per utilizzare il mysqli moderno: http://stackoverflow.com/a/8891552/716216 –

risposta

4

L'estensione MySQL viene deprecata, non il supporto MySQL nel suo complesso. PHP sta cercando di spingere la nuova estensione MySQLi come sostituzione:

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

MySQLi migliora le vecchie funzioni, consentendo di eseguire funzioni di MySQL procedurale (come prima) o con oggetti.

+0

Sì, conosco quella parte. PHP avrebbe potuto rendere MySQLI molto più facile da implementare se avessero mantenuto l'ordine delle variabili nelle chiamate alle funzioni! –

2

Come scritto sul manuale di PHP, http://php.net/manual/en/intro.mysql.php

Questa estensione è deprecato a partire dal PHP 5.5.0, e non è raccomandato per la scrittura di nuovo codice come verrà rimossa in futuro. Invece, si dovrebbe usare l'estensione mysqli o PDO_MySQL. Vedi anche l'API di MySQL per ulteriore aiuto nella scelta dell'API MySQL.

Si dovrebbe usare mysqli.

+1

Leggi di nuovo la domanda, l'OP lo sa già. – Paul

6

Se si dispone del tempo di sviluppo, si consiglia vivamente di passare a PDO o MySQLi. Queste estensioni verranno mantenute e ufficialmente supportate dal gruppo PHP.

Se l'applicazione è veramente stabile e protetta,, disabilitare l'avviso generato da 5.5. Quando l'estensione viene rimossa, sono certo che esisterà ancora come estensione PECL che includerei poi.

4

Mi piacerebbe sapere quali sarebbero le migliori pratiche per i siti esistenti che utilizzano MySQL.

Questo è facile da rispondere.
Non ci dovrebbero essere funzioni Mysql (così come Mysqli o PDO) nel codice dell'applicazione.
Se stai usando le funzioni API prime come questo

$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; 
} 

poi si deve inizio riscrivere i codici di immediatey, utilizzando alcuni banca dati involucro invece di chiamate API prime dirette, per farlo sembrare come questo :

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

non sarà solo accorciare e abbellire i vostri codici in modo drammatico, ma anche mettere tutte le chiamate API in una libreria, dove può essere cambiato in qualsiasi nuova API quando il team di PHP ha deciso di uccidere un altro eccellente ext.

+0

Perché nessun amore ascendente? ext/mysql è * favoloso *. –