neoweiter Posted June 4, 2022 Share Posted June 4, 2022 (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 June 4, 2022 by neoweiter (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted June 4, 2022 Share Posted June 4, 2022 1- as tu essayé de changer CALL par SELECT 2- tu connais (int) ? pour éviter les failles de sécurité? Link to comment Share on other sites More sharing options...
neoweiter Posted June 4, 2022 Author Share Posted June 4, 2022 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 Link to comment Share on other sites More sharing options...
Mediacom87 Posted June 4, 2022 Share Posted June 4, 2022 Et juste un query ? https://www.prestashop.com/fr/blog/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5 Link to comment Share on other sites More sharing options...
neoweiter Posted June 4, 2022 Author Share Posted June 4, 2022 (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 June 4, 2022 by neoweiter (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted June 4, 2022 Share Posted June 4, 2022 dans ce cas rajoute LIMIT, avec un système de pagination Link to comment Share on other sites More sharing options...
Mediacom87 Posted June 4, 2022 Share Posted June 4, 2022 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. Link to comment Share on other sites More sharing options...
neoweiter Posted June 4, 2022 Author Share Posted June 4, 2022 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); Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now