PHP: Salvare un array in un database
| febbraio 11th, 2009Quotidianamente durante la scrittura dei progetti faccio un grande uso di array e molte volte ho pensato che sarebbe utilie per vari scopi salvare il contenuto di un array in un database.
Con php questa operazione è molto semplice, basta utilizzare la funzione serialize().
Serialize “traduce” in stringa il contenuto dell’array così da poterlo salvare in un campo di una tabella, successivamente, per il recupero dei dati e la “ritrasformazione” in array, bisogna utilizzare la funzione unserialize().
In pratica l’ipotetico array $var_array=array(‘pippo’,'pluto’,'paperino’) verrebbe codificato in questa maniera:
a:3:{i:0;s:5:"pippo";i:1;s:5:"pluto";i:2;s:8:"paperino";}
Di seguito è mostrato del codice di esempio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php /* * Trasformo l'array in stringa * Per evitare errori di sql codifico la stringa in base64 */ $var_array = array('pippo','pluto','paperino'); $array_to_save = base64_encode( serialize($var_array) ); /* Salvataggio nel database */ $sql = "INSERT INTO TABELLA (CAMPO) VALUES ('".$array_to_save."')"; mysql_result($sql,$dblink); /* Recupero dell'array dal database */ $sql = "SELECT CAMPO FROM TABELLA WHERE ID = ".$id; $result = mysql_result($sql,$dblink); $row = mysql_fetch_assoc($result); $var_array = unserialize( base64_decode($row[CAMPO]) ); ?> |