Anfänger: wie ID nach INSERT ermitteln?

Anfänger: wie ID nach INSERT ermitteln?

am 21.04.2008 17:28:03 von Michael Weis

Hallo,

Nach einem INSERT soll die (AutoIncrement)ID des Datensatzes ermittelt
werden. Ist das, um es sauber zu machen, nur transaktionsorientiert
möglich oder gibt es da eine andere Lösung?

Es geht um einen kleinen Shop, die Gefahr konkurrierender Zugriffe geht
aktuell gegen Null, aber wer weiß was die Zukunft bringt..

Sidn die Beispiele unter

in Ordnung (Abschnitt 'Transaktionen unter MySQL') oder muss ich etwas
Wichtiges dabei beachten?


Danke für Tipps & Gruß,

Michael

Re: Anfänger: wie ID nach INSERT ermitteln?

am 21.04.2008 18:12:38 von Niels Braczek

Michael Weis schrieb:

> Nach einem INSERT soll die (AutoIncrement)ID des Datensatzes ermittelt =

> werden. Ist das, um es sauber zu machen, nur transaktionsorientiert=20
> möglich oder gibt es da eine andere Lösung?

Du kennst anscheinend das Manual noch nicht:
http://de3.php.net/manual/en/,
speziell
http://de3.php.net/manual/en/function.mysql-insert-id.php

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: Anfänger: wie ID nach INSERT ermitteln?

am 21.04.2008 19:39:00 von Markus Kottenhahn

Michael Weis schrieb:

> Sidn die Beispiele unter
>
> in Ordnung (Abschnitt 'Transaktionen unter MySQL') oder muss ich etwas
> Wichtiges dabei beachten?


Ich denke, http://de.php.net/manual/de/function.mysql-insert-id.php
reicht aus :-)

Wichtig ist halt zu wissen, dass man mit einem eindeutigen DB-Handle
arbeitet, dadurch ist die Kiste - vereinfacht gesagt - auch
transaktionssicher. Jedenfalls funktioniert das auch mit etlichen
konkurrierenden Prozessen zuverlässig.

Re: Anfänger: wie ID nach INSERT ermitteln?

am 21.04.2008 21:21:34 von Dominik Echterbruch

Michael Weis wrote:
>
> Nach einem INSERT soll die (AutoIncrement)ID des Datensatzes ermittelt
> werden. Ist das, um es sauber zu machen, nur transaktionsorientiert
> möglich oder gibt es da eine andere Lösung?

Transaktionen sind nicht nötig. Mit
SELECT LAST_INSERT_ID();
erhältst du die zuletzt über die aktuelle Verbindung generierte ID.

In dem Zusammenhang: Es gab mal ein Problem mit persistenten
Verbindungen von PHP aus und LAST_INSERT_ID. Ob das noch gilt, kann ich
dir aber nicht sagen.

> Sidn die Beispiele unter
>
> in Ordnung (Abschnitt 'Transaktionen unter MySQL') oder muss ich etwas
> Wichtiges dabei beachten?

Als Beispiel für eine Transaktion (!) sind sie gerade so OK. Als
Beispiel für Autoincrement taugen sie nicht wirklich...

Grüße,
Dominik
--
Wo kämen wir denn da hin, wenn jeder nur fragte "Wo kämen wir denn
da hin?", aber niemand ginge, um zu sehen, wohin wir kämen, wenn wir
gingen?
(Autor unbekannt)

Re: Anfänger: wie ID nach INSERT ermitteln?

am 21.04.2008 23:55:14 von Gregor Kofler

Michael Weis meinte:
> Hallo,
>
> Nach einem INSERT soll die (AutoIncrement)ID des Datensatzes ermittelt
> werden. Ist das, um es sauber zu machen, nur transaktionsorientiert
> möglich oder gibt es da eine andere Lösung?

mysql_insert_id().

Gregor



--
http://photo.gregorkofler.at ::: Landschafts- und Reisefotografie
http://web.gregorkofler.com ::: meine JS-Spielwiese
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Anfänger: wie ID nach INSERT ermitteln?

am 22.04.2008 08:13:38 von Michael Weis

Dominik Echterbruch wrote at 21.04.2008 21:21
> Transaktionen sind nicht nötig. Mit
> SELECT LAST_INSERT_ID();
> erhältst du die zuletzt über die aktuelle Verbindung generierte ID.

Super, das hatte ich nicht gefunden.
Sieht genau danach aus, was ich brauche.

> In dem Zusammenhang: Es gab mal ein Problem mit persistenten
> Verbindungen von PHP aus und LAST_INSERT_ID. Ob das noch gilt, kann ich
> dir aber nicht sagen.

Habe ich nichts aktuell zu gefunden....

Danke & Gruß,

Michael

Re: Anfänger: wie ID nach INSERT ermitteln?

am 22.04.2008 08:16:07 von Michael Weis

Hallo alle,


Markus Kottenhahn wrote at 21.04.2008 19:39
> Ich denke, http://de.php.net/manual/de/function.mysql-insert-id.php
> reicht aus :-)
>
> Wichtig ist halt zu wissen, dass man mit einem eindeutigen DB-Handle
> arbeitet, dadurch ist die Kiste - vereinfacht gesagt - auch
> transaktionssicher. Jedenfalls funktioniert das auch mit etlichen
> konkurrierenden Prozessen zuverlässig.

Ja das reicht aus, und SELECT LAST_INSERT_ID().

Doch, ich hatte Doku gelesen, mache im Moment den halben Tag nix
anderes, hier hatte ich mich aber in die Transaktionen verbohrt und den
Wald vor Bäumen nicht gesehen.


Danke allen,

Michael

Re: Anfänger: wie ID nach INSERT ermitteln?

am 22.04.2008 20:48:57 von Claus Reibenstein

Gregor Kofler schrieb:

> Michael Weis meinte:
>
>> Hallo,
>>
>> Nach einem INSERT soll die (AutoIncrement)ID des Datensatzes ermittelt
>> werden.
>
> mysql_insert_id().

Das ist kein SQL, sondern PHP. Du weißt, in welcher Gruppe Du gerade
postest?

Gruß. Claus

Re: Anfänger: wie ID nach INSERT ermitteln?

am 23.04.2008 23:37:39 von Gregor Kofler

Claus Reibenstein meinte:
> Gregor Kofler schrieb:
>
>> Michael Weis meinte:
>>
>>> Hallo,
>>>
>>> Nach einem INSERT soll die (AutoIncrement)ID des Datensatzes ermittelt
>>> werden.
>> mysql_insert_id().
>
> Das ist kein SQL, sondern PHP. Du weißt, in welcher Gruppe Du gerade
> postest?

Jein. Warum das fup im OP war, weiss auch nur der Autor. Bitte beim
halben Dutzend anderer Postings, die mysql_insert_id() oder den Link
aufs Handbuch gepostet haben auch beschweren. Sonst bin ich angerührt...

Gregor


--
http://photo.gregorkofler.at ::: Landschafts- und Reisefotografie
http://web.gregorkofler.com ::: meine JS-Spielwiese
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Anfänger: wie ID nach INSERT ermitteln?

am 24.04.2008 22:51:03 von Claus Reibenstein

Gregor Kofler schrieb:

> [...] Bitte beim
> halben Dutzend anderer Postings, die mysql_insert_id() oder den Link
> aufs Handbuch gepostet haben auch beschweren. Sonst bin ich angerührt...

Du warst nun mal der erste. Alle anderen haben Dir nur - dem typisch
menschlichen Herdentrieb folgend - unreflektiert nachgeplappert :-)

Gruß. Claus

Re: Anfänger: wie ID nach INSERT ermitteln?

am 24.04.2008 23:50:05 von Gregor Kofler

Claus Reibenstein meinte:
> Gregor Kofler schrieb:
>
>> [...] Bitte beim
>> halben Dutzend anderer Postings, die mysql_insert_id() oder den Link
>> aufs Handbuch gepostet haben auch beschweren. Sonst bin ich angerührt...
>
> Du warst nun mal der erste. Alle anderen haben Dir nur - dem typisch
> menschlichen Herdentrieb folgend - unreflektiert nachgeplappert :-)
>

Heeee... Der Niels war der erste, mit seinem Verweis aufs PHP Manual.
Ich hab nur dem Herdentrieb folgend...

Gregor

Ich hab jetzt nochmal nachgeschaut: Ich hab auf das OP in
d.c.l.p.datenbanken, also einfach das f'up übersehen (f'up ohne xpost
find ich eh kacke, weil Überblick komplett dahin). Und die anderen auch
alle. Also alle quasi unschuldig.



--
http://photo.gregorkofler.at ::: Landschafts- und Reisefotografie
http://web.gregorkofler.com ::: meine JS-Spielwiese
http://www.image2d.com ::: Bildagentur für den alpinen Raum