Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Nelze ulozit hodnotu do DB

tomve
verified
rating uzivatele
(22 hodnocení)
12. 6. 2015 13:18:21
Napsal Souki;1202047
SQL injection z toho přímo stříká. Doporučoval bych podívat se třeba na dibi.
Dibi is Database Abstraction Library for PHP 5. | dibi
nebuď zléj, je to jen vývojář... :D
12. 6. 2015 13:18:21
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119335
Jan Kuthan
verified
rating uzivatele
(48 hodnocení)
12. 6. 2015 14:37:31
Možná to tam vůbec nevidím, ale v té tvé funkci ve foreach, nechybí ti tam $key? Tím pádem pak i po implode nebudou nalezeny názvy sloupců?
12. 6. 2015 14:37:31
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119334
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
12. 6. 2015 14:45:46
Vymýšlíte tady kolo a stejně je to ve výsledku kód plný bezpečnostních děr a jiných rizik.
Proč raději místo tohoto kódu:
function add($db, $table, $data) {
$query = "INSERT INTO $table (`".implode("`, `", array_keys($data))."`) VALUES ('".implode("', '", $data)."')";
$db->query($query);
}
$sql = $db->query("SELECT id_product, name, description FROM ps_product_lang ORDER BY id_product ASC");
while ($record = $sql->fetch_row()) {
$idProduct = $record;
$name = $record;
$description = $record;
$sql2 = $db->query("SELECT id_tax_rules_group, price FROM ps_product WHERE id_product = "$idProduct"");
while ($record2 = $sql2->fetch_row()) {
$idVat = $record2;
$price = $record2;
}
$data = array(
'id_product' => $idProduct,
'id_vat' => $idVat,
'price_without_vat' => $price,
'price_with_vat' => $price + ($price * 0.21),
'name' => $name,
'description' => $description
);
//print_r($description);
$record = add($db, 'prevod_products', $data);
}
Nepoužít tohle:
foreach(dibi::query("SELECT id_product, name, description FROM ps_product_lang ORDER BY id_product ASC") as $productLang){
$product = dibi::query("SELECT id_tax_rules_group, price FROM ps_product
WHERE id_product = %i",$productLang->id_product)->fetch();
dibi::insert('prevod_products',)->execute();
}
Dělá to úplně to samé, ale je to bezpečné, kompatibilní s novými verzemi PHP, lze to přečíst a pokud bude nějaký problém, tak se to vypíše v chybové hlášce.
12. 6. 2015 14:45:46
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119333
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
12. 6. 2015 14:47:52
Nemluvě o tom, že celý ten PHP kód by šel nahradit jedním SQL dotazem.
12. 6. 2015 14:47:52
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119332
Jan Kuthan
verified
rating uzivatele
(48 hodnocení)
12. 6. 2015 14:49:40
Napsal Souki;1202077
Nemluvě o tom, že celý ten PHP kód by šel nahradit jedním SQL dotazem.
Všici reagují na otázku proč tento kod nefunguje :), to že jsou lepší řešení celého zápisu s použitím třebas zmíněné dibi je jasný ;)
12. 6. 2015 14:49:40
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119331
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
12. 6. 2015 14:54:08
Napsal kdosiodjinud;1202078
Všici reagují na otázku proč tento kod nefunguje :), to že jsou lepší řešení celého zápisu s použitím třebas zmíněné dibi je jasný ;)
Já moc nevidím důvod podporovat evidentně špatný kód. Proč tazateli raději neukázat, že se v roce 2015 s databází dá pracovat daleko snadněji?
Teda... v roce 2015 by byla aktuální spíš třeba doctrine, ale nahradit špagetkový kód za dibi mi přijde jako poměrně snadný přechod plný pozitiv a sociálních jistot.
12. 6. 2015 14:54:08
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119330
Jan Kuthan
verified
rating uzivatele
(48 hodnocení)
12. 6. 2015 14:58:23
Napsal Souki;1202080
Teda... v roce 2015 by byla aktuální spíš třeba doctrine, ale nahradit špagetkový kód za dibi mi přijde jako poměrně snadný přechod plný pozitiv a sociálních jistot.
S tím jednoznačně souhlasím, ale už jsem zažil klienta, který si najmul na banální věc "profíka", ten do starého zbastleného kodu přidal právě doctrine a ta banální věc byla řešena přes ni. Přibylo neskutečně kodu navíc, přibylo spousta hacků ve stávajícím systému etc...
Řekl bych, že jsou chvíle, kdy je to na zvážení ;) Když už něco nového implementovat tak kompletně naskrz a né z polovičky.
12. 6. 2015 14:58:23
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119329
tomve
verified
rating uzivatele
(22 hodnocení)
12. 6. 2015 15:03:38
Napsal kdosiodjinud;1202081
S tím jednoznačně souhlasím, ale už jsem zažil klienta, který si najmul na banální věc "profíka", ten do starého zbastleného kodu přidal právě doctrine a ta banální věc byla řešena přes ni. Přibylo neskutečně kodu navíc, přibylo spousta hacků ve stávajícím systému etc...
Řekl bych, že jsou chvíle, kdy je to na zvážení ;) Když už něco nového implementovat tak kompletně naskrz a né z polovičky.
Jo to jsou profíci, co umí jen frameworky a ostatní nezájem.
Chtěl poradit, dostal radu. Osobně nevidím důvod používat dibi, pokud se to umí.
12. 6. 2015 15:03:38
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119328
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
12. 6. 2015 15:11:44
Napsal Tomve;1202083
Chtěl poradit, dostal radu. Osobně nevidím důvod používat dibi, pokud se to umí.
Jenže tady se to evidentně neumí, takže se snažím vnutit dibi, která ty základní věci řeší a přitom se používá víceméně stejně jako mysql_* funkce.
Například zmiňovaná mysql_real_escape_string není nějaká vše řešící metoda - v určitých případech se kolem toho dá dostat. Proč se ale takovými prkotinami zabývat, když to už dávno tisíc lidí řešilo dříve? Není lepší místo řešení dávno vyřešených problémů raději věnovat čas něčemu produktivnějšímu?
12. 6. 2015 15:11:44
https://webtrh.cz/diskuse/nelze-ulozit-hodnotu-do-db/strana/3/#reply1119327
Pro odpověď se přihlašte.
Přihlásit