alphacity Posted January 15, 2014 Share Posted January 15, 2014 Bonjour, J'explique mon problème. Depuis plusieurs mois mon prestashop 1.5.2 fonctionne correctement jusqu'à récemment. Dans le fichier /classes/Category.php à la ligne 535 foreach ($result as &$row) J'ai un Warning comme quoi la variable $result n'est pas valide et pour cause elle est à false. La requête sql est pourtant correcte et s'exécute parfaitement sur phpmyadmin : SELECT c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description FROM `ps_category` c INNER JOIN ps_category_shop category_shop ON (category_shop.id_category = c.id_category AND category_shop.id_shop = 1) LEFT JOIN `ps_category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = 5 AND cl.id_shop = 1 ) LEFT JOIN `ps_category_group` cg ON (cg.`id_category` = c.`id_category`) WHERE `id_parent` = 184 AND `active` = 1 AND cg.`id_group` = 1 GROUP BY c.`id_category` ORDER BY `level_depth` ASC, category_shop.`position` ASC En debuggant juste après le executeS(); print_r(Db::getInstance(_PS_USE_SQL_SLAVE_)); J'obtiens: DbPDO Object ( [server:protected] => ***** [user:protected] => ***** [password:protected] => ***** [database:protected] => ***** [is_cache_enabled:protected] => 0 [link:protected] => PDO Object ( ) [result:protected] => [last_query:protected] => SELECT c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description FROM `ps_category` c INNER JOIN ps_category_shop category_shop ON (category_shop.id_category = c.id_category AND category_shop.id_shop = 1) LEFT JOIN `ps_category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = 1 AND cl.id_shop = 1 ) LEFT JOIN `ps_category_group` cg ON (cg.`id_category` = c.`id_category`) WHERE `id_parent` = 1074 AND `active` = 1 AND cg.`id_group` IN (3) GROUP BY c.`id_category` ORDER BY `level_depth` ASC, category_shop.`position` ASC [last_cached:protected] => ) Ce qui est étonnant c'est que normalement dans [result:protected] il devrait y avoir quelque chose du type (testé sur un autre site Prestashop) : PDOStatement Object ( [queryString] => "...Dernière requête SQL..." ) Alors je ne comprends pas pourquoi le [result:protected] n'est pas renseigné alors que la requête est parfaitement exécutée avec phpmyadmin. Comme le problème est très récent j'ai remis un backup de la base mysql d'il y a 6 jours et le problème est toujours présent. Merci de votre aide. Link to comment Share on other sites More sharing options...
Gregory Roussac Posted January 23, 2014 Share Posted January 23, 2014 (edited) Hello, A priori false n'est pas mis en cache ou un truc du genre. Vous n'avez peut être pas la dernière requête en fait. Honnêtement vous vous galérez, soit vous mettez un if ($result) avant le foreach, soit vous regardez le code actuel, soit essayez de passer en 1.5.6.2 avec le module d'upgrade. Sinon vous pouvez surement avoir la requête en faisant if (!$result) d($sql); Cordialement Edited January 23, 2014 by Gregory Roussac (see edit history) 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