Я бы не использовал отдельную таблицу.У меня будет отдельная таблица настроек, которая будет содержать доступные параметры конфиденциальности.
Settings
SettingId int
SettingName varchar(100)
UserSettings
SettingId int
UserId int
Настройки могут быть HideEmail , HideRealName, HidePhoneNUmber , например, и вы можете получить пользовательские настройки, когда пользователь аутентифицируется, и сохранить их в состоянии сеанса в виде массива строк (или пользовательской модели)
Затем вы можете запросить настройки пользователя следующим образом:
SELECT SettingName
FROM UserSettings
LEFT JOIN Settings
on UserSettings.SettingId = Settings.SettingId
WHERE UserId =1
Это вернет список настроек для текущего пользователя.Это должно быть довольно легко для вас, чтобы разобраться с PHP стороной вещей из этого.
- Сохранить результат в строковом массиве
- Проверить, если YourSetting присутствует в массиве, если он не показывает этот элемент
После того, как у вас есть массив, просто проверьте, существует ли значение и выполните необходимую логику
if (!in_array("HideEmail", $results)) {
echo "Show email address here";
}