Per quanto riguarda array_walk(), l'errore è la mancanza del passaggio per riferimento dell'elemento dell'array (vedi http://www.php.net/array_walk).
Da come hai strutturato la tua tabella, dovrebbe bastarti un codice come questo:
In ogni caso, la scelta di inserire in un campo dei valori multipli viola le regole di normalizzazione. Dovresti valutare la possibilità di creare una relazione molti a molti.Codice PHP:
$_POST['corsi'] = isset($_POST['corsi']) ? $_POST['corsi'] : array();
$_POST['corsi'] = is_array($_POST['corsi']) ? $_POST['corsi'] : array($_POST['corsi']);
$corsi = implode(', ', $_POST['corsi']);
$corsi = mysql_real_escape_string($corsi);
$sql = "UPDATE user_info SET .... corsi='{$corsi}' ....";