Jak dostat ID z databáze?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
davez
Člen | 60
+
0
-

Čau, mám DB tabulku ve které mám ID (auto increment), dále v ní mám jméno. Přes formulář uživatel zadá jméno a to se uloží do databáze a dostane své ID. Po této akci chci přesměrovat na jiný presenter, to dělám pomocí redirect. Chci však tomu presenteru na který přesměrovávám předat ID právě zaregistrovaného uživatele. Jména uživatelů mohou být duplicitní, tudíž asi nemohu ID vyhledávat dle jména. Prostě bych chtěl pracovat s ID právě aktivního uživatele. Lze to nějak jednoduše vyřešit?

llook
Člen | 407
+
0
-

$connection->lastInsertId()

JHadamcik
Člen | 47
+
0
-

Já bych to řešil přes návratovou hodnotu insertu. Insert při úspěchu vrací aktivní řádek a z něj vytáhneš ID, které bylo uživateli přiřazeno registrací. Je asi malá pravděpodobnost, že by mi do lastInsertId skočilo špatné ID, ale i tak si to pojistím takto :)

davez
Člen | 60
+
0
-

JHadamcik napsal(a):

Já bych to řešil přes návratovou hodnotu insertu. Insert při úspěchu vrací aktivní řádek a z něj vytáhneš ID, které bylo uživateli přiřazeno registrací. Je asi malá pravděpodobnost, že by mi do lastInsertId skočilo špatné ID, ale i tak si to pojistím takto :)

Tohle by mohlo vyřešit problém že se dva uživatelé registrují ve stejný čas a jejich ID se zamění :)

besanek
Člen | 128
+
0
-

@davez: Takový případ nemůže nastat. LAST_INSERT_ID() se ovlivňuje pouze v rámci jednoho připojení, takže ho jiný proces neovlivní.
Problém by ovšem mohl nastat při persistentním připojení.