NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
katrincsak
Člen
Avatar
katrincsak:11.7.2015 10:43

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 Hartinger
Vlastník
Avatar
Odpovídá na katrincsak
David Hartinger:11.7.2015 11:09

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.7.2015 11:09
New kid back on the block with a R.I.P
Avatar
katrincsak
Člen
Avatar
Odpovídá na David Hartinger
katrincsak:11.7.2015 12:21

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
Odpovídá na katrincsak
Patrik Valkovič:11.7.2015 12:31

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
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 Valkovič
katrincsak:11.7.2015 12:43

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:12.7.2015 0:48

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.