query("SHOW COLUMNS FROM users"); $columns = $stmt->fetchAll(PDO::FETCH_COLUMN); // Exclude sensitive fields like password $allowed_fields = array_diff($columns, ['password']); } catch (PDOException $e) { // Handle error, maybe default to a safe subset of fields $allowed_fields = ['id', 'name', 'email', 'role']; } } function get_users($fields) { if (empty($fields)) { return []; // No read permission } // Always include id for edit/delete links if (!in_array('id', $fields)) { $fields[] = 'id'; } $select_fields = implode(', ', $fields); try { $pdo = db(); $stmt = $pdo->query("SELECT $select_fields FROM users ORDER BY created_at DESC"); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { return ['error' => 'Database error: ' . $e->getMessage()]; } } $users = get_users($allowed_fields); ?>