Diskuze: PHP/MySQL insert a vrácení vloženého autoincrement ID

PHP PHP PHP/MySQL insert a vrácení vloženého autoincrement ID American English version English version

Avatar
katrincsak
Člen
Avatar
katrincsak:

Zdravím,

opět mám ne zrovna častý dotaz.

Potřebuji insertovat data do MySQL v PDO, ale zároveň potřebuji zjistit id automaticky vygenerovaného ID pro další zpracování. ID potřebuji uložit do SESSION a použít ho na dokončení.

Díval jsem se že existuje funkce mysql_insert_id, ale jestli se nepletu tak mi to vrátí pouze poslední id což by mohlo vést ke kolizi. Potřebuji znát přesně to id, které se vložilo automaticky.

Děkuji za pomoc ;-)

 
Odpovědět 11.7.2015 10:43
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na katrincsak
David Čápka:

Na funkce začínající mysql_ zapomeň. PDO má metodu lastInsertId(). Na metodu si dej pozor při práci s transakcemi, na ID se musíš ptát před commitnutím.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 11.7.2015 11:09
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
katrincsak
Člen
Avatar
Odpovídá na David Čápka
katrincsak:

Vzhledem k tomu, že jsem to psal 2x z důvodu odhlášení, tak jsem něco málo vynechal. Jako takhle vím, že míchat to nemohu, spíše jsem to uvedl, že jsem našel funkci, která by mohla řešit mojí situaci.
lastInsertID() jsem v PDO našel, ale díky tomuto jsem usoudil, že mi to najde poslední ID a nikoliv přesně to vkládané. Nebo je ten název jen trošku matoucí? Teoreticky jestli že to najde poslední ID i když v několika ms, tak by se mohlo vložit jiné ID a mohlo by to znamenat docela kritické problémy.

Editováno 11.7.2015 12:22
 
Nahoru Odpovědět 11.7.2015 12:21
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na katrincsak
patrik.valkovic:

Funkce vrátí ID posledního záznamu, který si vložil. Tedy pokud vložíš jen jeden záznam, tak ti vrátí ID toho záznamu. Pokud by si vkládal 3 záznamy, tak vrátí ID třetího záznamu atd.

Nahoru Odpovědět  +1 11.7.2015 12:31
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
katrincsak
Člen
Avatar
Odpovídá na patrik.valkovic
katrincsak:

Tak to je pak přesně co potřebuji, zmátl mě název takže jsem to pak už ani nezkoušel a řekl jsem si že v době co budu v práci, že mi zde někdo poradí. Takhle až aspoň přijdu z práce, tak nemusím hledat, spekulovat a mohu se rovnou vrhnout do řešení.

Děkuji ;-)

 
Nahoru Odpovědět 11.7.2015 12:43
Avatar
katrincsak
Člen
Avatar
katrincsak:

Přidávám jen způsob řešení.

//Dotaz na poslední ID

public static function getLastId()
{
     return self::$spojeni->lastInsertId();
}

Provede se jen dotaz ;-)

Editováno 12.7.2015 0:48
 
Nahoru Odpovědět 12.7.2015 0:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.