First I would check to make sure you are retrieving preference_desc from the database. Change the "while" loop to say:
while ($row = mysql_fetch_array($result)) {
echo $row['preference_desc'] . "<br>";
}
This should produce a list of items, with a <br> tag between each.
When in doubt, always always always do a "View source" in your browser. It will show you what making it that far, even if it's not being displayed properly.
In your case, we first need to know that $row['preference_desc'] actually contains something. If not, it's either the query, the database table or you're not getting a connection to the database. By the way, my previous code obviously contains no database connection string - I am assuming you have that in your script already - do you?
You can check whether your sql query is producing a result by writing:
if (mysql_num_rows($result) > 0) {
echo "there is a result";
}
A few bits to get you started anyway.