Para "concatenar" .. tan sólo respeta la sintax SQL del "CREATE" ...
algo tipo (si quieres usra: mysql_field_name($result,$i) aunque podrías usar $columnes[0] .. $columnes[1] .. etc que corresponden al "nombre" del campo, el "tipo" .. la "logintud" .. etc ...
Código PHP:
$sql .= $columnes[0]." ".$columnes[1]."(".$columnes[1].")".$el_otro_dato.";";
Cita: pero no se como concatenar la consulta y tampoco se como coger si el campo es NOT NULL, AUTOINCREMENT y esas propiedades específicas
Ahí ya no sé .. (no he investigado más el tema) .. Lo único que puedo comentarte es que hay funciones SQL de la gama: SHOW .. SHOW Tables .. etc .. que creo que puedes obtener más información que la que tal vez entrege PHP con sus mysql_list_.. y demás.
Por lo demás .. podrías investigar el código de phpMyadmin (
www.phpmyadmin.net) para ver como trabaja ese tema puntual.
Un saludo,