Zadejte hledaný výraz...

Aktualizace MySql databáze skrze PHP

Sashaa
verified
rating uzivatele
(18 hodnocení)
10. 10. 2021 16:35:53
Zdravím, při provedení update databáze mi to hodí chybu... nevím proč tomu tak je. 
Zde je kod:
foreach ($data_info as $info){
//loop vypis id produktů
$idproduktu = $info;
if(isset($_POST)){
$sql = "UPDATE produkty SET  nazev_produktu='".$info."'
WHERE ID_produktu = $idproduktu"; 
   
$result = mysqli_query($conn, $sql) or die (mysqli_error($conn));
} //ukončení isset update tlačitka 
               
}//ukončení foreach
Hází mi to následující chybu:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's® ' WHERE ID_produktu = 2667925' at line 3
což znamená, že od ID 2667925 dál mi tu aktualizaci neprovede...
poradí někdo?
Díky
10. 10. 2021 16:35:53
https://webtrh.cz/diskuse/aktualizace-mysql-databaze-skrze-php#reply1491835
Vít Michalek
verified
rating uzivatele
(14 hodnocení)
10. 10. 2021 17:18:38
Ten název produktu bych dal ještě do addslashes(). Bude tam v textu apostrof, proto se ten dotaz rozpadne
10. 10. 2021 17:18:38
https://webtrh.cz/diskuse/aktualizace-mysql-databaze-skrze-php#reply1491834
Sashaa
verified
rating uzivatele
(18 hodnocení)
10. 10. 2021 17:49:45
Napsal Vít Michalek;1632490
Ten název produktu bych dal ještě do addslashes(). Bude tam v textu apostrof, proto se ten dotaz rozpadne
addslashes() pomohlo :) a už to funguje, asi se tam vznikali nějaké znaky nebo mezery, jak píšeš. Díky moc
Ještě se zeptám ohledně insert a update:
Existuje nějaká funkce, nebo metoda, jak by se dalo provést insert či update rozdělené po kouskách?
Dejme tomu naimportuje se prvních 500 řádků, pak dalších 500 řádku... aby se za ráz neimportovalo (nebo neaktualizovalo) 10 000 řádku, byl by to asi colaps servru i prohlížeče :D
je na to nějaká funkce k rozdělení? Klidně nějaké časové pauzy mezi jednotlivými daty
10. 10. 2021 17:49:45
https://webtrh.cz/diskuse/aktualizace-mysql-databaze-skrze-php#reply1491833
wt_kaspy
verified
rating uzivatele
(4 hodnocení)
10. 10. 2021 20:08:07
Napsal Sashaa;1632491
addslashes() pomohlo :) a už to funguje, asi se tam vznikali nějaké znaky nebo mezery, jak píšeš. Díky moc
Ještě se zeptám ohledně insert a update:
Existuje nějaká funkce, nebo metoda, jak by se dalo provést insert či update rozdělené po kouskách?
Dejme tomu naimportuje se prvních 500 řádků, pak dalších 500 řádku... aby se za ráz neimportovalo (nebo neaktualizovalo) 10 000 řádku, byl by to asi colaps servru i prohlížeče :D
je na to nějaká funkce k rozdělení? Klidně nějaké časové pauzy mezi jednotlivými daty
Na to nepotřebuješ funkci, stačí to rozepsat v tom PHP. Máš 2 možnosti, jak to budeš provádět:
1) v rámci jednoho insert příkazu vlozis více řádků
2) pro každej řádek pouzijes vlastní insert
Ad 1 - náročnější na RAM na serveru, je tam větší potenciál vyčerpání a následného pádu databáze, na druhou stranu čas vykonání příkazu bude rychlejší
Ad 2 - RAM (spíš) nedojde, ale zase to bude trvat déle. V tomhle případě je zase větší pravděpodobnost, ze dosáhneš na limit nějakýho timeoutu, který by mohl webserver, PHP nebo nedej bože MySQL mít.
Obecně vetsi, deletrvajici úpravy, doporučuju nedělat pres webserver a PHP, ale ideálne přes PHP-CLI ( jestli máš ssh přístup k serveru )
10. 10. 2021 20:08:07
https://webtrh.cz/diskuse/aktualizace-mysql-databaze-skrze-php#reply1491832
Sashaa
verified
rating uzivatele
(18 hodnocení)
10. 10. 2021 22:19:04
Napsal wt_kaspy;1632496
Na to nepotřebuješ funkci, stačí to rozepsat v tom PHP. Máš 2 možnosti, jak to budeš provádět:
1) v rámci jednoho insert příkazu vlozis více řádků
2) pro každej řádek pouzijes vlastní insert
Ad 1 - náročnější na RAM na serveru, je tam větší potenciál vyčerpání a následného pádu databáze, na druhou stranu čas vykonání příkazu bude rychlejší
Ad 2 - RAM (spíš) nedojde, ale zase to bude trvat déle. V tomhle případě je zase větší pravděpodobnost, ze dosáhneš na limit nějakýho timeoutu, který by mohl webserver, PHP nebo nedej bože MySQL mít.
Obecně vetsi, deletrvajici úpravy, doporučuju nedělat pres webserver a PHP, ale ideálne přes PHP-CLI ( jestli máš ssh přístup k serveru )
na youtubu jsem našel nějaké návody, že proces rychlého nahrání dat lze provést přímo v databazi skrze SQL příkazy a nastavení tabulek... to jsem zkoušel na mém localhostu ale házelo to chyby oprávnění provádět tyto úpravy...
jinde jsem zase našel, že opakující loop vypysy lze též načíst rychleji skrze php funkci, tak nevim...
10. 10. 2021 22:19:04
https://webtrh.cz/diskuse/aktualizace-mysql-databaze-skrze-php#reply1491831
wt_kaspy
verified
rating uzivatele
(4 hodnocení)
11. 10. 2021 09:56:58
Napsal Sashaa;1632504
na youtubu jsem našel nějaké návody, že proces rychlého nahrání dat lze provést přímo v databazi skrze SQL příkazy a nastavení tabulek... to jsem zkoušel na mém localhostu ale házelo to chyby oprávnění provádět tyto úpravy...
jinde jsem zase našel, že opakující loop vypysy lze též načíst rychleji skrze php funkci, tak nevim...
Tak v kazdem pripade - prikazy primo do MySQL budou vzdy rychlejsi, nez pres PHP. Bohuzel ne vzdy je primej pristup do MySQL umoznen.
K tomu opravneni - hromada webhostingu povoluje pripojeni do DB pouze lokalne, tedy z tveho PC to nepujde. Jestli lokalne myslis, ze mas DB nainstalovanou u sebe na PC, tak si jen uprav prava a pujde ti to.
Opakujici se vypisy muzou bejt rychlejsi v PHP v pripade, ze jsou fakt stejny a PHP si je zacachuje do cache, pak se tedy pri spusteni dotazu vubec neptas databaze, ale vrati to rovnou PHP z cache, ale samozrejme to muze zpusobit zastaralost dat, takze opatrne na to.
11. 10. 2021 09:56:58
https://webtrh.cz/diskuse/aktualizace-mysql-databaze-skrze-php#reply1491830
Pro odpověď se přihlašte.
Přihlásit