| 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: 14 let
|
|||
0