Mysql
 sql >> Database >  >> RDS >> Mysql

Passa a un sito Web di grandi dimensioni da MySQL a MySQLi

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

Se hai chiamate dirette a funzioni mysql_* in tutto il codice e nessun livello di astrazione del database in cui esegui le tue query tramite una classe o una funzione helper, dovrai modificare ogni comando.

Non puoi semplicemente farla franca aggiungendo una i a comandi come mysql_query come proceduralmente mysqli_query() richiede che il primo parametro sia il collegamento al db dove con mysql_query() se era stata fornita una connessione, era un secondo parametro.

Invece di cambiare semplicemente mysql_query(...) in mysqli_query($link,.....) consiglierei che non c'è momento migliore per mettere in atto un livello di astrazione db. Quindi usa le funzioni ad esempio sql_query() che effettivamente elaborano le tue query, quindi in futuro se hai bisogno di cambiare nuovamente DB puoi semplicemente aggiornare i comandi specifici del db in un file di astrazione. In questo modo, se scrivi una funzione che esegue il wrapping di mysqli_query, potresti essere in grado di rinominare semplicemente mysql_query() con la tua funzione di supporto e lasciare che la funzione di supporto si preoccupi di inserire il collegamento lì.

Anche se questo è il modo più semplice, non legherà parametri né preparerà istruzioni, il che è un fattore importante nella prevenzione delle vulnerabilità di sql injection

Dopo aver modificato tutti questi comandi, è necessario eseguire il test.

Se non hai scritto test automatizzati, questo è probabilmente un buon momento per iniziare a scriverli. Anche se dovrai verificare che ogni modifica abbia funzionato, se lo fai con un test automatico, puoi evitare quel dolore in futuro.