Нет проблем с использованием динамического поля в качестве имени столбца, насколько я вижу, чтобы решить вашу проблему, вы должны удалить ' из имени столбца, например:
$update_togliexp = "UPDATE utenti SET ".$compra_abi." = '".$nuovo_livello_abi."' WHERE nome = '".$nome."'";
Таким образом, вы используете запятую для значения, чтобы оно вставлялось в виде строки, а не в столбец, поскольку MYSQL знает имя