Autor | Zpráva | ||
---|---|---|---|
Radim24 Profil * |
#1 · Zasláno: 2. 9. 2006, 15:51:01
Ahoj.
Mám takový dotaz. Potřebuju udělat update několika záznamů v jednom příkazu. mysql_query(UPDATE...; UPDATE;... UPDATE...); Nejdříve jsem zkoušel po jednom UPDATE, a potom po dvou. V phpmyadminovi to správně uloží data. Píše, že uložil dva záznamy. Když to potom zkouším ještě jednou - opakovat odeslání toho samého požadavku, tak to pak píše že žádné změny neprovedl... No, a když to samé zkouším přes svoji php stránku, tak to píše že žádný záznam nebyl uložen. Ale jednotlivě by to šlo. Tak se chci zeptat jestli nevíte, v čem by mohla být chyba a jestli se to vyplatí psát vícero UPDATE do požadavku, nebo jestli to mám volat jednotlivě mysql_query(UPDATE...;) a volat to z cyklu, který může mít třeba 20-50 opakování. Díky za radu |
||
djlj Profil |
#2 · Zasláno: 2. 9. 2006, 15:56:18
Když to potom zkouším ještě jednou - opakovat odeslání toho samého požadavku, tak to pak píše že žádné změny neprovedl...
To je jasné, proč by ty změněné hodnoty měnil znovu na to samé?! |
||
Radim24 Profil * |
#3 · Zasláno: 2. 9. 2006, 16:03:21
Dobře, tak to jsem si myslel. Ale nechápu jak to že přes phpadmina to odešle vícenásobně, ale přes moji stránku ne. Zdá se mi to jednoduché - jen mysql_query(UPDATE...; UPDATE...;) tak netuším kde může být chyba.
Jo a nenapadá vás jestli se dá z výsledku funkce mysql_querry() zjistit kolik záznamů správně aktualizoval? |
||
djlj Profil |
#4 · Zasláno: 2. 9. 2006, 16:05:54
Radim24
To netuším, nikdy jsem neměl potřebu ten dotaz takto upravovat. Snad poradí někdo jiný. Počet aktualizovaných záznamů zjistíš pomoci mysql_affected_rows();. |
||
Radim24 Profil * |
#5 · Zasláno: 2. 9. 2006, 16:07:37
Skvělé, díky
|
||
Radim24 Profil * |
#6 · Zasláno: 2. 9. 2006, 16:26:38
A nevíte někdo, když to tedy budu volat po jendom UPDATE v cyklu, nebude to horší (např. pomalejší) než když bych to volal jedním mysql požadavkem?
|
||
WanTo Profil |
#7 · Zasláno: 2. 9. 2006, 16:46:03
Radim24
Možná o trochu, ale nebude to téměř znát. |
||
Nox_lbc Profil |
#8 · Zasláno: 2. 9. 2006, 17:06:22
Já takhle (cyklem) UPDATUJU jeden sloupec cca 65000 řádků a trvá mi to jen 30sekund ;-)
|
||
Časová prodleva: 3 dny
|
|||
Radim24 Profil * |
#9 · Zasláno: 5. 9. 2006, 15:14:21
Radim, díval jsem se jak to je udělané v Phpadminu. Zmátlo mě to, že po proveddení sql se píše string: UPDATE... UPDATE..., ale když jsem se díval do střev, zjístil jsem, že je to dělané přes foreach, kde v poli jsou jednotlivé požadavky pro update, takže je to jasné, jinak než přes cyklus to nejde.
|
||
Radim24 Profil * |
#10 · Zasláno: 5. 9. 2006, 15:15:16
To Nox_Ibc tož to si dobrý borec :-)
|
||
ninja Profil |
#11 · Zasláno: 5. 9. 2006, 15:20:01
Hlavne bych se zkusil zamyslet jestli to nejde cele zapsat do jendnoho UPDATU (byt se slozitejsi klauzuli SET a WHERE).
|
||
24_work Profil * |
#12 · Zasláno: 5. 9. 2006, 15:32:12
presne tak od toho update je - aby pouzival SET a WHERE
Nox_lbc> borec? ;-) spis blazen ale aspon se behem te akce stihne napit kafe ;-) |
||
Joker Profil |
#13 · Zasláno: 5. 9. 2006, 15:50:51
ninja
No přesně... proč volat tolik UPDATE, nešlo by to napsat jedním?? |
||
Nox_lbc Profil |
#14 · Zasláno: 6. 9. 2006, 21:58:26
spis blazen ale aspon se behem te akce stihne napit kafe ;-)
A nejen to ;-) tu ukousnu banán či párek v rohlíku a UPDATE je hotov ;-) ... |
||
Radim24 Profil * |
#15 · Zasláno: 7. 9. 2006, 16:10:17
To ninja
Jde o editaci položek, kde může být na jedné stránce vypsáno i 25 záznamů. To není málo, tak nevím jestli bych to mohl dát do jednoho UPDATE. |
||
Joker Profil |
#16 · Zasláno: 8. 9. 2006, 11:24:26
Radim24
Teď jsem nějak nepochopil v čem vidíte problém. |
||
mila Profil |
#17 · Zasláno: 8. 9. 2006, 12:47:20
Od jisté verze php nelze pomocí jedné mysql_query volat více dotazů. Má to snad být obrana před sql injection.
V mysqli je na to ale myslím fce. |
||
Radim24 Profil * |
#18 · Zasláno: 8. 9. 2006, 15:36:01
No příjde mi divné, skládat tak dlouhý požadavek mysql_query(UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);UPDATE table (col1,..., col6) set (val1,...val6) where (condition);.................);
nění to dlouhé (apropos nevím jestli to mám dobře zapsané, asi by to mělo být trošku jinak....) |
||
tiso Profil |
#19 · Zasláno: 8. 9. 2006, 15:40:01
Radim24
Od čoho máme cykly? |
||
Radim24 Profil * |
#20 · Zasláno: 8. 9. 2006, 15:47:03
No, vždyť jsem to říkal, že to radši udělám cyklem, než to cpát všechno do jednoho příkazu.
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0