Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/w41258/domains/chiappucci.it/public_html/ServerScript/ban-ip/class.BanIp.php on line 15
febbraio, 2009 | Guido Chiappucci's Blog

Guido Chiappucci's Blog

Archive for febbraio, 2009

PHP: Salvare un array in un database

without comments

Quotidianamente 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]) );
 
?>

Written by Guido

febbraio 11th, 2009 at 4:59 pm

Posted in MySql,PHP

Tagged with , , , ,