Bonjour,
mysqli::store_result() est une méthode historique (php 5.0) qui permettait de récupérer tous les enregistrements retournés par la requête SQL.
Ceux-ci sont mis en cache côté php lors du premier fetch() qui n'a ainsi plus besoin de solliciter le serveur MySQL. A éviter pour de gros volume de données et/ou si la mémoire allouée à php est insuffisante.
Cela permettait notamment de faire du data_seek() alors que mysqli::use_result() (php 5.0) qui récupérait les résultats un par un ne le permettait pas.
mysqli::get_result() est apparue avec php 5.3 à priori pour des questions de performances et produit effectivement le même résultat que store_result() mais sans stocker l'ensemble des données renvoyées par MySQL en cache. Lors du second fetch(), php sollicitera le serveur MySQL pour connaitre la valeur suivante au lieu de la récupérer en mémoire.
Ceci étant, il y a en général réellement peu d'intérêt à utiliser des requêtes préparées pour faire un SELECT. L'objectif des requêtes préparées est d'optimiser l'exécution de celles-ci lorsqu'elles sont exécutées plusieurs fois à la suite avec des paramètres différents (ex : insert en masse ... ). On défini alors la structure de la requête qui est mémorisée et on transmet ensuite en masse les valeurs à utiliser.
Si la requête ne doit être exécutée qu'une seule fois, cela ne sert donc à rien

Seul avantage c'est de ne pas s'encombrer avec les real_escape pour protéger les données ou de se poser la question de la nécessité d'apostrophes pour délimiter les chaines qui seront gérés par le bind
