2013-07-18 19 views
5

Voglio passare da MySQL a MySQLi, ma ho un sito molto grande.Cambia sito web di grandi dimensioni da MySQL a MySQLi

Ho letto che https://wikis.oracle.com/display/mysql/Converting+to+MySQLi potrebbe aiutarmi e ho letto How could I change this mysql to mysqli?. Dice che potrei sostituire la maggior parte delle funzioni semplicemente aggiungendo una "i" alla funzione e che dovrei iniziare con bughunting.

Ma il mio sito Web è molto complesso e di grandi dimensioni e ci vorrebbe molto tempo per verificare se tutto funziona. Quindi: qual è il modo migliore per passare da MySQL a MySQLi per un sito molto grande?

Grazie!

+0

non c'è un modo facile. è necessario controllare tutti gli script e sostituire le chiamate. e prova. – Aris

+0

hai tester? – DevZer0

+0

Quali sono le cose principali che cambiano? Solo i parametri e il nome delle funzioni? E no, non ho molti tester ... – Jordy

risposta

4

Non c'è una risposta facile alla tua domanda in quanto praticamente ogni modo semplice per farlo comportava le cose in modo diverso quando l'applicazione è stata scritta.

Se si dispone di chiamate dirette alle funzioni mysql_ * in tutto il codice e nessun livello di astrazione del database in cui si eseguono le query tramite una classe o una funzione helper, sarà necessario modificare ogni comando.

Non si può solo ottenere via con l'aggiunta di un i per i comandi come mysql_query come proceduralmente mysqli_query() richiede il primo parametro di essere il link al db dove con mysql_query() se una connessione è stato dato a tutti, è stato un secondo parametro.

Invece di modificare solo mysql_query (...) in mysqli_query ($ link, .....), suggerirei che non c'è momento migliore per mettere in atto un livello di astrazione db. Quindi usa funzioni come sql_query() che in realtà elaborano le tue query così in futuro se hai bisogno di cambiare di nuovo il DB puoi semplicemente aggiornare i comandi db specifici in un unico file di astrazione. In questo modo se scrivi una funzione che avvolge mysqli_query, potresti semplicemente rinominare mysql_query() con la tua funzione helper e lasciare che la funzione helper si preoccupi di inserire il link.

Mentre questo è il modo più semplice, non si legano i parametri o redige il bilancio che è un fattore importante nella prevenzione delle vulnerabilità SQL injection

Una volta che avete cambiato tutti questi comandi necessari alla prova.

Se non sono stati scritti test automatici, questo è probabilmente un buon momento per iniziare a scriverli. Anche se è necessario verificare che ogni modifica abbia funzionato, se lo fai con un test automatico, puoi evitare quel dolore in futuro.

+0

Come programmatore alle prime armi con questo stesso compito, apprezzo la suddivisione in ciò che dovrebbe essere fatto, ma come sempre viene anche associata una scadenza ristretta e mi manca il tempo per imparare: come funziona un livello di astrazione; come vengono eseguiti i test automatici (molto nuovi per OOP). Se hai una buona documentazione sull'argomento lo apprezzerei, ma molto probabilmente dovrò iniziare a sostituire tutte le chiamate di 'mysql_ *' subito. Grazie in anticipo –

-1

stai prendendo la giusta mossa perché la funzione mysql_ * è deprecata per l'ultima versione di php. è necessario scaricare un convertitore per questo scopo ... vedere questo e scaricare ... mysql to mysqli

+1

In realtà è una mossa sbagliata. Una tale sostituzione meccanica non aggiungerà nulla alla sicurezza. E l'OP ha già quel collegamento. –