Autor Zpráva
Lokutus7323
Profil *
Ahoj,
už 6 hodin řeším jednu pro mě zoufalou situaci. Hrabu se v Prestashopu 1.5, kde pomocí obyčejné PHP dávky snížil v databázi (MySQL) cenu všech produktů o 21% a nastavil jim příslušnou daň, tzn.: produktů je cca 40 a u každého jsem změnil 2 hodnoty. Použil jsem interní funkci Prestashopu
Db::getInstance->ExecuteS(moje_sql_davka);
Vše se v pořádku provedlo. Kontroloval jsem přes phpmyadmin. Hodnoty jsou změněné a správně. Pokud použiju výše popsanou funkci, která je mimochodem napojená na PDO, vyhodí mi "správný výsledek". Tedy výpis tabulky i se změněnými hodnotami.

Bohužel v Prestashopu se ceny zobrazují stále ty staré, bez DPH. 4-5 hodin jsme se hrabal v jádře Presty, a zjistil jsem, že problém nevzniká díky nějaké Prestashop cache, ale že PDF, resp.: funkce PDOStatement::fetch vyhazuje "stará" data. Tedy data ještě před změnou.

print_r($result->fetch(PDO::FETCH_ASSOC));
Zobrazí se výpis asociovaného pole se starými hodnotami. Zajímavé ovšem je, že když změní PDO::FETCH_ASSOC na PDO::FETCH_BOTH, tak se zobrazí tyn samý výpis pole se starou cenou i ostatními hodnotami, ale k tomu navíc i indexy [0]-[**] s hodnotami již aktuálními správnými. Soudím tedy, že si nějakým způsobem PDO někde zakešovalo hodnoty a vůbec je nekontroluje jestli se v MySQL nezměnili. O manuální úpravě databáze pomocí phpmyadmin ani nemluvím.

Můžete mi prosím poradit, jak problém vyřešit. Jak reloadovat cache PDO nebo jí úpně vypnout, či proč vůbec k problému došlo. Jsem už opravdu zoufalý.

Ještě zasílám výstup s použitím PDO::FETCH_BOTH :
Array ( [id_product] => 29 [0] => 29 [id_supplier] => 0 [1] => 0 [id_manufacturer] => 0 [2] => 0 [id_category_default] => 7 [3] => 7 [id_shop_default] => 1 [4] => 1 [id_tax_rules_group] => 0 [5] => 1 [on_sale] => 0 [6] => 0 [online_only] => 0 [7] => 0 [ean13] => [8] => [upc] => [9] => [ecotax] => 0.000000 [10] => 0.000000 [quantity] => 0 [11] => 0 [minimal_quantity] => 1 [12] => 1 [price] => 2400.000000 [13] => 1983.471074 [wholesale_price] => 0.000000 [14] => 0.000000 [unity] => [15] => [unit_price_ratio] => 0.000000 [16] => 0.000000 [additional_shipping_cost] => 0.00 [17] => 0.00 [reference] => SCO-04301AZ [18] => SCO-04301AZ [supplier_reference] => [19] => [location] => [20] => [width] => 0.000000 [21] => 0.000000 [height] => 0.000000 [22] => 0.000000 [depth] => 0.000000 [23] => 0.000000 [weight] => 0.000000 [24] => 0.000000 [out_of_stock] => 2 [25] => 2 [quantity_discount] => 0 [26] => 0 [customizable] => 0 [27] => 0 [uploadable_files] => 0 [28] => 0 [text_fields] => 0 [29] => 0 [active] => 0 [30] => 0 [available_for_order] => 1 [31] => 1 [available_date] => 0000-00-00 [32] => 0000-00-00 [condition] => new [33] => new [show_price] => 1 [34] => 1 [indexed] => 0 [35] => 0 [visibility] => none [36] => none [cache_is_pack] => 0 [37] => 0 [cache_has_attachments] => 1 [38] => 1 [is_virtual] => 0 [39] => 0 [cache_default_attribute] => 0 [40] => 0 [date_add] => 2012-11-07 00:36:37 [41] => 2012-11-07 00:36:37 [date_upd] => 2013-01-06 19:53:46 [42] => 2013-01-06 19:53:46 [advanced_stock_management] => 1 [43] => 1 [44] => 29 [id_shop] => 1 [45] => 1 [46] => 7 [47] => 0 [48] => 0 [49] => 0 [50] => 0.000000 [51] => 1 [52] => 2400.000000 [53] => 0.000000 [54] => [55] => 0.000000 [56] => 0.00 [57] => 0 [58] => 0 [59] => 0 [60] => 0 [61] => 1 [62] => 0000-00-00 [63] => new [64] => 1 [65] => 0 [66] => none [67] => 0 [68] => 1 [69] => 2012-11-07 00:36:37 [70] => 2013-01-06 19:53:46 ) 
scheras
Profil *
Problém způsobuje mysql query cache. Vyřešíte to použitím sql příkazu (například v phpmyadminovi) RESET QUERY CACHE nebo FLUSH TABLES. Ještě link odkud jsem čerpal link.
Lokutus7323
Profil *
Dobrý večer,

děkuji za odpověď. Vyzkoušel jsem, ale bohužel mě u Wedosu omezují práva v MySQL. Není možné to ještě nějak obejít? Při hledání hodnot v mysql pomocí SQL funguje. Problém nastavá ve chvíly kdy se použije PDO.
kimi
Profil *
mal som rovnaky problem pri importe,
upravoval som tabulku product ale ceny v shope sa tahaju z tabulky product_shop

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: