Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Hromadný update mysql...

Ahoj, v databázi mám tabulku user, kde mám vedené uživatele a teď jich tam je už něco přes 3000. Právě jsem do té tabulky přidal jeden sloupec (CODE) a teď bych všem uživatelům potřeboval ten code vygenerovat (v php).

Nedalo by se to udělat nějak jedním update dotazem? Napadlo mě totiž, že bych si načetl z DB všechny ID uživatelů (např. do pole) a k nim pak v cyklu vygeneroval ty kódy (nezáleží mě, jaký kód kdo dostane). Ale pak jak to uložit do DB...Děkuji

Předmět Autor Datum
Nějak takhle: $sql = "SELECT DISTINCT id_uzivatele FROM uzivatel ORDER BY id_uzivatele"; $vysledek…
FixExa 02.10.2013 15:05
FixExa
díky, toto umím, jenže to udělá tolik updatu, kolik je userů, tedy v mém případě to bude přes 3000 d…
n.u.r.v. 02.10.2013 15:18
n.u.r.v.
Pokud ty kódy budeš generovat v PHP tak stejně nejspíš nemáš jinou možnost. Kdyby jsi je generoval n…
Wikan 02.10.2013 15:22
Wikan
Samozrejme, že sa to dá. Nedávno som o tom čítal aj na slovenskej doméne. Tu je príklad: http://stac…
msx. 02.10.2013 18:10
msx.
Ano, udělá. Nebo: $sql = "UPDATE `uzivatel` SET code = '". $code. "'"; jeden pro všechny stejný -…
FixExa 02.10.2013 15:23
FixExa
Díky...bohužel kód je pro každého jiný... Hmm, takže zbývá ten cyklus no...škoda Máte představu, j…
n.u.r.v. 02.10.2013 15:35
n.u.r.v.
3000 updatů není pro slušnou databázi vůbec nic.
Wikan 02.10.2013 15:45
Wikan
Ani, prd.
FixExa 02.10.2013 16:04
FixExa
A tu je to dokonca po česky: http://php.vrana.cz/hromadna-aktualizace-zaznamu.p hp
msx. 02.10.2013 18:16
msx.
To je super! poslední
FixExa 02.10.2013 22:08
FixExa

Nějak takhle:

$sql = "SELECT DISTINCT id_uzivatele FROM uzivatel ORDER BY id_uzivatele";
$vysledek = mysql_query( $sql ) or die( mysql_error() );
	if ( mysql_num_rows( $vysledek ) > 0 )
	{
	 while ( $radek_s = mysql_fetch_array( $vysledek ) )
	 {
          //$code - musí se v cyklu naplnit
          $code = "sd58_fgsdfg";
          $sql2 = "UPDATE `uzivatel` SET code = '". $code. "' WHERE `id_uzivatele` = '". $radek_s['id_uzivatele']. "' LIMIT 1";
          mysql_query($sql2) or die("Neplatný dotaz: ". mysql_error());
         }
	}

díky, toto umím, jenže to udělá tolik updatu, kolik je userů, tedy v mém případě to bude přes 3000 dotazů->updatů na databázi

Spíš jsem měl představu, že načtu všechny id uživatelů a vygneruji ty kody a pak bych udělal jeden update, kde bych dal:

update user set code = "xxx","yyy","zzz",... WHERE ID = 1,2,3,...

Ale nevím, zda to tak jde a jak to správně zapsat...

Zpět do poradny Odpovědět na původní otázku Nahoru