Я за WebORB.
Когда-то свой первый проект начинал писать используя HTTPService, данные гнал в XML, создавая классы на PHP, методы которых возвращали свои данные в массивах, чтобы был единый интерфейс для формирования результатов в XML ("делая ручками через циклы и echo"). Сейчас все делаю, используя WebORB. Очень удобно.
С использованием его твой код превращается в

Код:
$result = array();
while($line = mysql_fetch_assoc($results)) {
$result[] = $line["product"];
}
return $result;
Причем можно и расширить...

Код:
$result = array();
while($line = mysql_fetch_assoc($results)) {
$result[] = array('name'=>$line["product"], 'id'=>$line["product_id"]); // и так далее.
}
return $result;
На клиенте используется RemoteObject(). К пример, обработчик на получение

Код:
protected function onLoad(event: ResultEvent): void {
var myList: Object = event.result;
for each (var item: Object in myList) {
Alert.show('имя='+item.name+', id='+item.id);
}
}
Причем можно возвращать переменные, ассоциативные массивы любой вложенности, объекты...
Например, если возвращать из PHP array('name'=>'Какое-то имя', 'address'=>array('bldg'=>'какой-то дом', 'street'=>'какая-то улица', 'city'=>'какой-то город')), то на клиенте доступ будет удобный:

Код:
var data: Object = event.result;
var name: String = data.name;
var building: String = data.address.bldg;
var street: String = data.address.street;
var city: String = data.address.city;
В общем, серьезная гибкость.