Habakuk34 Posted October 2 Share Posted October 2 (edited) Mam taką małą zagwozdkę z pobraniem id_product w Prestashop 8.1 Otóż mam taki kod: while(...){ .... echo $pn; //wyswietla wartość prawidłową - dany part number jest w bazie mysql (testowane na phpmyadmin - znajduje rekord) $pID = Db::getInstance()->getValue('SELECT id_product FROM ' . _DB_PREFIX_ . 'product WHERE reference = "'.pSQL($pn).'" '); echo $pID; // zwraca puste } gdy zastosuje próbnie kod bez zmiennej to działa poprawnie, oczywiscie zmienna musi być bo to chcę w pętli uruchomić $pID = Db::getInstance()->getValue('SELECT id_product FROM ' . _DB_PREFIX_ . 'product WHERE reference = "SYMBOL" '); echo $pID; // wyświetla prawidłowe id_product o co może tu chodzić ? jak usunę pSQL() to Presta 8.1 wywala błąd. We wcześniejszych wersjach tego nie było i nie miałem takiego problemu Edited October 2 by Habakuk34 (see edit history) Link to comment Share on other sites More sharing options...
ps8modules Posted October 3 Share Posted October 3 (edited) Zamiast podwójnych cudzysłowów użyj ukośnika odwrotnego \' lub `. Zamiast podwójnych cudzysłowów użyj ukośnika odwrotnego \' lub `. pSQL() wykonuje ucieczkę. $pID = Db::getInstance()->getValue('SELECT p.id_product FROM ' . _DB_PREFIX_ . 'product p WHERE p.reference = \''.pSQL($pn).'\''); pSQL: function pSQL($string, $htmlOK = false) { static $db = false; if (!$db) $db = Db::getInstance(); return $db->escape($string, $htmlOK); } bqSQL: function bqSQL($string) { return str_replace('`', '\`', pSQL($string)); } $db->escape: public function escape($string, $html_ok = false, $bq_sql = false) { if (!is_numeric($string)) { $string = $this->_escape($string); if (!$html_ok) { $string = strip_tags(Tools::nl2br($string)); } if ($bq_sql === true) { $string = str_replace('`', '\`', $string); } } return $string; } Edited October 3 by ps8modules (see edit history) Link to comment Share on other sites More sharing options...
Habakuk34 Posted October 3 Author Share Posted October 3 Dzięuję za pomoc. Co prawda wskazówka tu akurat nie miała zastosowania ale naprowadziła mnie na prawidłowe rozwiązanie. Zmienna $pn zawierała nie tylko SYMBOL ale również kod html <span>, przez co nie znajdowało w bazie produktu o wskazanym symbolu. 1 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