Te sucede por qué .. $_SESSION es un array si, es cierto ..pero a su vez puede llevar variables de todo tipo .. por ejemplo otros arrays .. como es el caso.
Si usas extrac() para dejar tus variabels como globales $variable .. debes aplicarlo a:
Código PHP:
$variables=$_SESSION['variables'];
extrac($variables);
Y .. bueno .. ese extrac() no pone tus variabels separadas por comas como así requier los parámetros del INSERT (sintax SQL) ni tampoco variables contiene el nombre del campo y valor .. para eso debes hacer:
Código PHP:
foreach ($variables as $indice => $valor){
echo $indice."=>".$valor."<br>";
}
Tambien puedes usar implode() para generar tu lista de valores desde el array $variables (y concatenarlo con la , (coma)) ...
A todo esto . .¿validas tus datos? .. si pretendes ir recogiendo todo lo que viaje en los formularios y no validar nada por ahorrarte unas líneas de código en tu INSERT .. tienes que tener muchoooo cuidado. VALIDA siempre los datos.
Un saludo,