Jump to content

DB Class : Récupérer les données d'une Stored Procedure


Recommended Posts

Posted (edited)

Bonjour, 

J'ai créé une STORED PROCEDURE dans mon PhpMyAdmin, qui fonctionne lorsque je l'exécute, mais je n'arrive pas à récupérer les données depuis ma fonction PHP : 

    function GetPromotionProducts(){
        $custid = Context::getContext()->customer->id;
        $id_promo = ($_GET['id_promo']) ? $_GET['id_promo'] : 1;


        $db = Db::getInstance(_PS_USE_SQL_SLAVE_);

        $sql = 'CALL `Select_Promos`('.$custid.', '.$id_promo.')';
        $results = $db->executeS($sql);

        var_dump($results);

        return $results;
    }

Le dump me retourne bool(true) 🤔 au lieu d'un array avec toutes mes données.

Si je fais volontairement une faute de frappe dans le nom de la PROC, il me retourne false. Donc j'ai vraiment l'impression qu'il appelle convenablement la procédure, mais sans me retourner les données.

Quelqu'un peut m'aider ?

Edited by neoweiter (see edit history)

Share this post


Link to post
Share on other sites

Merci pour votre réponse : 

1 - Ca ne marche pas avec un SELECT. Ca donne une erreur : "FUNCTION Select_Promos does not exist"

2 - Je vais les rajouter ;) merci

Share this post


Link to post
Share on other sites

Posted (edited)

Le soucis c'est que avec une simple query, le résultat est beaucoup trop long (+- 10 secondes), du faite qu'on travaille dans des tables avec énormément de données (pas loin du million de records)...

D'où l'utilisation d'une Stored Procedure :)

Edited by neoweiter (see edit history)

Share this post


Link to post
Share on other sites

il y a une heure, neoweiter a dit :

Le soucis c'est que avec une simple query, le résultat est beaucoup trop long (+- 10 secondes), du faite qu'on travaille dans des tables avec énormément de données (pas loin du million de records)...

D'où l'utilisation d'une Stored Procedure :)

Je parlais juste d'utiliser query() pour appeler ton CALL et le traiter par la suite.

Share this post


Link to post
Share on other sites

J'ai finalement trouvé la solution. Ma procédure incluait des création de tables temporaires. J'ai sorti ces commandes de ma procédures, pour les créer avant d'appeler ma procédure $results = $db->executeS($sql);

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More