Autor | Zpráva | ||
---|---|---|---|
4ever Profil |
#1 · Zasláno: 2. 8. 2011, 11:52:21
Dá se v php udělat vkládání do databáze tak, abych nemusel posílat dotaz po jednotlivých řádcích, ale vše najednou?
Příklad: provedu prohledání adresářové struktury a do tabulky chci uložit jméno, cestu, datum a čas a další informace, které jsem o souboru vyčetl. Hledání provádím pomocí cyklu, jde jen o to, jestli to vše připravit jako jeden dotaz pro databází (mysql) nebo to mám posílat po jednom příkazu. |
||
djlj Profil |
#2 · Zasláno: 2. 8. 2011, 11:56:39
4ever:
„do tabulky chci uložit jméno, cestu, datum a čas a další informace, které jsem o souboru vyčetl“ Však tohle se dělá jedním dotazem pro vložení. Nebo jak to tedy teď děláš ty? Nebo tím myslíš to, že vkládáš do databáze všechny soubory ve složce postupně a chtěl bys to tam vložit naráz? Pak si můžeš všechny informace v cyklu někam ukládat a nakonec sestavit hromadné vložení. |
||
4ever Profil |
#3 · Zasláno: 2. 8. 2011, 12:00:55
djlj:
„Nebo tím myslíš to, že vkládáš do databáze všechny soubory ve složce postupně a chtěl bys to tam vložit naráz? Pak si můžeš všechny informace v cyklu někam ukládat a nakonec sestavit hromadné vložení.“ Ano, tak jsem to myslel. Jak sestavit ten hromadný dotaz pro všechny řádky? Nikdy jsem to nedělal. Díky |
||
o_O Profil |
#4 · Zasláno: 2. 8. 2011, 12:05:54 · Upravil/a: o_O
$sqlPrikaz=array(); while(...){ $sqlPrikaz[]='(...)'; } mysql_query("INSERT INTO tabulka (...) VALUES ".implode(",",$sqlPrikaz)); Vytvoříš si pole, do kterého budeš ukládat hodnoty tak, jako by jsi je psal do SQL příkazu. Pak je pomocí funkce implode() vložíš do mysql_query(). |
||
djlj Profil |
#5 · Zasláno: 2. 8. 2011, 12:06:55
Mrkni sem: http://dev.mysql.com/doc/refman/5.5/en/insert.html
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); |
||
4ever Profil |
#6 · Zasláno: 2. 8. 2011, 12:45:42
o_O:
Akorád, že já to pole připravím už v tom cyklu pro získání dat. Takže je to takhle jednoduché. Díky |
||
o_O Profil |
#7 · Zasláno: 2. 8. 2011, 12:50:57
4ever:
„Akorád, že já to pole připravím už v tom cyklu pro získání dat“ Takto jsem to také myslel. |
||
4ever Profil |
#8 · Zasláno: 2. 8. 2011, 13:40:00 · Upravil/a: 4ever
Teď jsem si ale uvědomil, že to asi nebude tak jednoduché. Ještě musím ověřit jestli daný soubor není zapsaný v databázi.
Prý se na to dá použít "INSERT IGNORE INTO...". |
||
djlj Profil |
#9 · Zasláno: 2. 8. 2011, 18:07:51
Jojo, použij tohle, pak to projde.
|
||
4ever Profil |
#10 · Zasláno: 2. 8. 2011, 18:10:36 · Upravil/a: 4ever
Ještě nevím jak nastavit klíče tabulky. Jestli mám dát sloupce cesta+soubor jako primární klíč, ale co sloupec id? id auto_increment, unique? Sloupce cesta+soubor musí být jedinečné v tom smyslu, že když např. "/obrazky/nature/"+"flower.010.jpg" (odpovídá sloupcům cesta+soubor) již je v databázi, musí to vrátit chybu, že klíč už existuje nebo něco takového.
|
||
djlj Profil |
#11 · Zasláno: 2. 8. 2011, 18:13:09
Nastav na cestu se souborem unikátní klíč, to by mělo v pohodě zajistit, že tam bude každý soubor jen jednou. Na ID si nastav auto_increment, pokud s tím pak chceš dál pracovat třeba v nějaké administraci - předávat si v odkazu id je jednodušší než tam cpát celou adresu souboru.
|
||
4ever Profil |
#12 · Zasláno: 2. 8. 2011, 18:16:59
djlj:
„Nastav na cestu se souborem unikátní klíč, to by mělo v pohodě zajistit, že tam bude každý soubor jen jednou.“ Jo, problém je právě v tom, že se nejedná o např. path="obrazky/nature/soubor.jpg" ale o dva sloupce path="obrazky/nature/"+"soubor.jpg" |
||
djlj Profil |
#13 · Zasláno: 2. 8. 2011, 18:18:14
Však UNIQUE jde nastavit i na víc sloupců - nastav jeden klíč na oba sloupce ;).
|
||
4ever Profil |
#14 · Zasláno: 2. 8. 2011, 18:19:06
OK, zkusím. Nastavit klíč na 20. sloupec nejde? Musím to teda přesunout?
|
||
4ever Profil |
#15 · Zasláno: 2. 8. 2011, 18:21:12 · Upravil/a: 4ever
Error
SQL query: Edit ALTER TABLE `info` ADD UNIQUE ( `html` , `common_path` ); MySQL said: Documentation #1170 - BLOB/TEXT column 'html' used in key specification without a key length Co to znamená? |
||
djlj Profil |
#16 · Zasláno: 2. 8. 2011, 18:21:56
?! Důvod chyby tam máš napsaný. Změň si u toho typ sloupce. Na název souboru nepotřebuješ TEXT nebo BLOB.
|
||
4ever Profil |
#17 · Zasláno: 2. 8. 2011, 20:39:42
OK dík
|
||
Časová prodleva: 13 let
|
0