Errori comuni Mysql di un programmatore PHP
466 visiteErrori Mysql PHP
Il database è uno strumento fondamentale per chi programma in PHP ed è molto importante evitare di fare alcuni errori comuni.Senza entrare troppo nel dettaglio ecco di seguito una lista di errori comuni:
1. Usare l’engine MyISAM invece di InnoDB
MySql ha un diverso numero di engine a disposizione e il MyISAM è quello di default.
La scelta di usare questo engine è pessima per due motivi: MyISAM non supporta i vincoli di chiave esterna e le transazioni, elementi fondamentali per mantenere l’integrità dei dati del DB. Inoltre tutta la tabella viene messa in Lock quando avviene un inserimento o un aggiornamento abbassando di molto le performance della gestione dei dati.
C’è una soluzione: usare InnoDB.
2. Usare le funzioni PHP mysql
Se state usando un versione di MySql superiore alla 4.1.3 è consigliabile usare le funzioni mysql native PHP: mysqli.
Queste funzioni utilizzano il prepared statements durante gli inserimenti utili per evitare l’injection SQL e inoltre supporta multiple statement e le transazioni.
3. Non controlla l’input
Evitare in modo assoluto di fidarsi di qualsiasi stringa input che si riceve e inserirla senza un controllo nel database. In questo modo eviteremo attacchi distruttivi e injection al nostro DB.
4. Non usare il charset UTF-8
L’UTF-8 risolve tutti i nostri problemi in caso di multilingua.
5. Non ottimizzare le Query
Il 99% dei problemi di performance di un software PHP viene da un cattivo utilizzo del Database. Per esempio non si controllano le query con EXPLAIN per capire come ottimizzarle o come inserirne correttamente gli indici. E’ possibile utilizzare Query Profiler e molti altri tools (slow queries) etc..
6. Usare Select * nelle query
Cercare di non usare * nelle Select
7. Non effettuare un Backup
Ricordarsi di effettuare backup periodici perchè il disastro dei nostri dati è sempre in agguato.
8. MySQL non è l’unico Database
Infine non dimentichiamoci che Mysql non è l’unico RDBMS presente sul mercato !
MariaDB per esempio è una alternativa… PostgresSQL oppure FirebirdSQL Drizzle ma ce ne sono altri.