Autor | Zpráva | ||
---|---|---|---|
lopikol Profil |
Mám tabulku user_info, která obsahuje user_id, name, email, about, genre, telephone...... (user_id nastaveno jako unique).
Můj dotaz zní, jak nejlepé udělat dotaz na vložení záznamu v případě, že záznam s daným user_id neexistuje, jinak update. 1. $exist = SELECT 1 FROM user_info WHERE user_id = 1; if ($exist) { // UPDATE }else{ // INSER } 2. (opičí způsob = vypsání všech sloupců z tabulky user_info) INSERT INTO user_info (user_id, name, email, about, genre, telephone, ........) VALUES ('1', 'asdads', 'Jsdad4', '', 'asdsda', 'eeee', '754545', 'jhkjhk', ..........) ON DUPLICATE KEY UPDATE name = 'asdads' and email = 'Jsdad4' Neexistuje ještě nějaký lepší způsob, který to zvládne v jednom datazu? |
||
Tori Profil |
#2 · Zasláno: 30. 6. 2012, 20:05:52
Asi REPLACE? To chcete stejnou funkcí/SQL zpracovávat jak registraci uživatele, tak změnu údajů (jen jsem zvědavá, nenapadá mě jiný důvod použití)?
|
||
lopikol Profil |
Tori: Nejdená se o registraci, ale vyplnění profilu. Člověk ho vyplnit nemusí, ale pokud ho vyplní, tak musí mít v db jen jeden řádek. (1:1 = user:user_info).
Jde o to, že mnou uvedený první příklad jsou tři dotazy, resp. vždy dva spuštěné. V druhém případě musim vypsat celou tabulku a až bych db upravoval, tak zas musim upravit funkci. Tzv. druhý příklad je mnohem horší než ten první ;) Co jsem koukal, tak REPLACE by mnělo umět, to co chci, ale zase má plno much :/ |
||
ShiraNai7 Profil |
#4 · Zasláno: 30. 6. 2012, 20:36:38
A k čemu to tak moc potřebuješ cpát do 1 dotazu? Vyplňování profilu snad není akce, která by se prováděla dost často na to, aby měla taková optimalizace vůbec nějaký smysl.
|
||
LaMMa Profil |
#5 · Zasláno: 1. 7. 2012, 00:56:53
A co tak pri vytvoreni uzivatela vytvorit aj prazdny profil a potom uz len updatovat? Tym by si mal po probleme...
|
||
lopikol Profil |
#6 · Zasláno: 1. 7. 2012, 17:49:39
ShiraNai7: Ani mi nejde o optimalizaci, jako spíš o hledání nových způsobů zápisu. ;)
LaMMa: Pravda, že tohle bude asi nejjednodušší způsob. |
||
jenikkozak Profil |
#7 · Zasláno: 1. 7. 2012, 17:58:39
lopikol:
„LaMMa: Pravda, že tohle bude asi nejjednodušší způsob.“ Pak se ti bude lépe udržovat, pokud ty informace dáš do jedné tabulky spolu s nickem a id uživatele. Čímž se zřejmě oklikou vrátíš do stavu, ze kterého jsi pravděpodobně vyšel. :) |
||
Časová prodleva: 12 let
|
0