Diskuze: Vložení dlouhého kódu do databáze
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 27 zpráv z 27.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


a proč přes PHP využij opět PhpMyAdmina...
Protože to budou vkládat nezkušení uživatelé 
Mám svůj redakční systém, který chci publikovat, a tohle je poslední
překážka.
Zdar udělal jsem takový skript na vkládání v PhpMysqlArminu. Dám sem
odkaz a soubor. Jen co zjistím kam se to vkládá
)
Mužeš to přidat jako dlouhý zdroják
http://www.itnetwork.cz/dev-lighter
O.K. to jsem nevěděl: tady je odkaz http://www.itnetwork.cz/dev-lighter/90
Je to bez bezpečnostních kontrol. Takže dál si to uprav dle svého. Do scriptu by se ještě měla vložit kontrola, aby tam nebyly příkazy na smazání databáze, nebo nějaké jiné podobné "legrácky" které nechceš.
Pomoc 
Tak daleko jsem se v PHP ještě nedostal 
..jak se má jmenovat ten soubor ? s tím kódem do SQL ?
EDIT: Aha, ty to máš takhle... No já to mám totiž tak, že ten soubor se SQL se tam nahraje spolu se systémem a je ve složce /install/. Ve složce install je i PHP soubor, který se zeptá uživatele na údaje do MySQL a pak si je sám zapíše do souboru. A právě neevím, jak udělat to, aby zapsal ten kód z toho souboru do databáze.
vydrž večer to upravím. pro načtení souboru. jsem tě nepochopil 
Minimalistická verze... počítej, že data o velikosti cca 1Mb se budou ukládat cca 10vteřin (měřeno alespoň u mne na localhostu) Velikost je tam nastavena na 10MB soubor s SQL, nevím jak velký budeš používat.
Nahoře je spuštěn přístup do MySqli, jestli jej máš již spuštěn a předpokládám že ano, tak si to musíš nahoře upravit dle stávajícího...
$mysqli = new mysqli("server", "uzivatel_jmeno", "uzivatel_heslo", "jmeno_databaze");
$mysqli->query("SET GLOBAL max_allowed_packet=10485760");
$sql = file_get_contents("soubor_s_sql.sql");
$mysqli->multi_query($sql);
do {
if ($res = $mysqli->store_result()) {
var_dump($res->fetch_all(MYSQLI_ASSOC));
$res->free();
}
} while ($mysqli->more_results() && $mysqli->next_result());
Možná by to šlo rychleji, kdyby se celá dávka uzavřela do transakčních závorek. I když na MyISAM to asi význam nemá...
Do toho souboru napíšeš na začátek
BEGIN TRANSACTION;
a na konec
COMMIT;
Pokud by mezi nimi bylo víc kódu, rozdělíš to na bloky. Urychlení bývá podle typu databáze zanedbatelné až řádové. Většinou se to vyplatí dělat pro INSERT.
Pro MyISAM se dá použít ještě jeden fígl: Poskládat INSERTy ze samých SELECTů spojených UNION ALL. Takto se dá jedním SQL dotazem vložit více záznamů do jedné tabulky. Chová se to jako transakce.
Asi je velkej problém, když používám ovladač mysql (....pomocí kterýho je i připojení k databázi), že ?
btw. ten soubor má 4,14kb 
jsou to jen 4 tabulky a celkem asi 15 řádků
Nevidím to jako velký problém. Jen byste asi oba měli přejít na PDO.
PDO o tom jsem slyšel, zatím však nezkoušel... zas se bude co učit 
Přečti si 3. komentář 
"Protože to budou vkládat nezkušení uživatelé
Mám svůj redakční systém, který chci publikovat, a tohle je poslední
překážka."
zkus se přihlásit k DB přes ten můj script. Musí fungovat i u tebe, jestli ho máš v PHP povolený. Rozdíl je jen v přístupu k databázi. Mysql je starší verze Mysqli, které je jen více vybavené pro zpracování dat. A jestli tam máš 4kB dat tak to ten můj stávající script překousne ve zlomku vteřiny...
Pouštět nezkušeného uživatele do SQL není rozumný nápad. Z nezkušeného uživatele se snadno může stát záškodník. Databáze se sice proti tomu zabezpečit dá, ale skoro nikdo to nedělá.
SQL dotazy jsou stejné. Vlastně se hodně zjednoduší, protože se do nich nedávají hodnoty proměnných, ale jen otazníčky. S PDO se velmi dobře pracuje objektově, při chybách vyhazuje výjimky, které se ošetřují snáze, než chyby.
Prostě s PDO je práce s databází pohodlnější.
Já je nebudu pouštět do databáze 
Tak znovu 
Mám redakční systém, po uživateli potřebuju pouze údaje do databáze, kam
se má ten systém připojit (což je normální, to chce každej systém).
Po zadání těch informací se systém připojí a zapíše tam nějaký
základní info - vytvoří tabulky atd.
Jenže nevím, jak to udělat, protože tam je celkem dost úvozovek takže by
to mohlo s tím php blbnout, a taky že jo...
Tak se ptám tu, jestli s tím má někdo zkušenosti. 
Pokud si vleze do databáze a něco tam pokazí, to je jeho problém 
Pokud to chceš celé SQL vložit přímo do PHP, můžeš použít syntaxi Heredoc. Nějaké uvozovky tě pak přestanou trápit.
a co tedy vyzkoušet ten kratší script co jsem ti psal?
Zobrazeno 27 zpráv z 27.