Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:

Ahoj,
pomocí PhpMyAdmina jsem si exportoval databázi, a teď bych to přes PHP potřeboval do databáze zase vložit, nemá někdo nějaký nápad, jak ?

 
Odpovědět 21.4.2013 15:27
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

a proč přes PHP využij opět PhpMyAdmina...

Nahoru Odpovědět 21.4.2013 15:45
Čím víc vím, tím víc věcí nevím.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Hynek
Daniel Vítek:

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.

 
Nahoru Odpovědět 21.4.2013 15:58
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Daniel Vítek
David Hynek:

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á :o)

Nahoru Odpovědět 21.4.2013 19:54
Čím víc vím, tím víc věcí nevím.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
 
Nahoru Odpovědět 21.4.2013 21:10
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

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š.

Nahoru Odpovědět 21.4.2013 21:46
Čím víc vím, tím víc věcí nevím.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Hynek
Daniel Vítek:

Pomoc :D
Tak daleko jsem se v PHP ještě nedostal :D

 
Nahoru Odpovědět 22.4.2013 11:58
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Hynek
Daniel Vítek:

..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.

Editováno 22.4.2013 12:03
 
Nahoru Odpovědět 22.4.2013 12:00
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Daniel Vítek
David Hynek:

vydrž večer to upravím. pro načtení souboru. jsem tě nepochopil :)

Nahoru Odpovědět 22.4.2013 13:11
Čím víc vím, tím víc věcí nevím.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Daniel Vítek
David Hynek:

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());
Editováno 22.4.2013 14:02
Nahoru Odpovědět 22.4.2013 14:01
Čím víc vím, tím víc věcí nevím.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Hynek
Kit:

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á...

Nahoru Odpovědět 22.4.2013 15:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Kit
David Hynek:

rád se přiučím... jinak to zatím neumím :)

Nahoru Odpovědět 22.4.2013 16:18
Čím víc vím, tím víc věcí nevím.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Hynek
Kit:

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.

Nahoru Odpovědět 22.4.2013 16:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Hynek
Kit:

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.

Nahoru Odpovědět 22.4.2013 16:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Hynek
Daniel Vítek:

Asi je velkej problém, když používám ovladač mysql (....pomocí kterýho je i připojení k databázi), že ?

 
Nahoru Odpovědět 22.4.2013 17:34
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Hynek
Daniel Vítek:

btw. ten soubor má 4,14kb :D
jsou to jen 4 tabulky a celkem asi 15 řádků

 
Nahoru Odpovědět 22.4.2013 17:37
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

Nevidím to jako velký problém. Jen byste asi oba měli přejít na PDO.

Nahoru Odpovědět  +1 22.4.2013 17:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

To tam nacpeš i přes clipboard :)

Nahoru Odpovědět 22.4.2013 17:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

PDO o tom jsem slyšel, zatím však nezkoušel... zas se bude co učit :)

Editováno 22.4.2013 19:06
Nahoru Odpovědět 22.4.2013 19:05
Čím víc vím, tím víc věcí nevím.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

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."

 
Nahoru Odpovědět 22.4.2013 19:57
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

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...

Nahoru Odpovědět 22.4.2013 20:49
Čím víc vím, tím víc věcí nevím.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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á.

Nahoru Odpovědět 23.4.2013 8:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Hynek
Kit:

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ší.

Nahoru Odpovědět 23.4.2013 8:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

Já je nebudu pouštět do databáze :)
Tak znovu :D
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 :D

Editováno 23.4.2013 10:56
 
Nahoru Odpovědět 23.4.2013 10:55
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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.

Nahoru Odpovědět 23.4.2013 12:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Daniel Vítek
David Hynek:

a co tedy vyzkoušet ten kratší script co jsem ti psal?

Nahoru Odpovědět 23.4.2013 15:54
Čím víc vím, tím víc věcí nevím.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 27 zpráv z 27.