Выборка данных из базы через MySQLi и подготовленные выражения?
Столкнувшись с аналогичной проблемой долго пользовалась костылем из комментария zvirusz. Но недавно наткнулась на информацию о PDO. PDO позволяет:
1) Легко менять платформу SQL при использовании совместимых запросов;
2) Использовать prepared statements
3) Получать ассоциированный массив без костылей при помощи PDO::FETCH_ASSOC

Код получается что-то вроде

$stmt = $db->prepare("SELECT * FROM foo WHERE a = ?");
$stmt->execute(array($a));

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);


Собираюсь переводить свой проект на PDO, возможно и вам стоит глянуть в эту сторону, пока не завязли с MySQLi.
Одно мне непонятно: почему для такого «нового» и «крутого» расширения не придумали метод, позволяющий после выполнения подготовленного выражения получать заранее неизвестное количество полей?
Костыль можно найти почти всегда: ru.php.net/manual/en/mysqli-stmt.fetch.php#82742

Почему так сделано?
Видимо потому, что бездумная выборка всех полей — моветон.