Schrift
[thread]3802[/thread]

INSERT in Tabelle Autoincrement gesucht (Seite 2)



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Strat
 2007-04-23 01:04
#35403 #35403
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich stimme pq zu. die $sth->mysql_insertid() oder $dbh->last_insert_id() wird als art returncode zurueckgeschickt, und solange man mit $sth kein neues Statement ausfuehrt, stimmt es (genauso wie $1, $2 usw bei regulaeren Ausdruecken).
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Alrik2
 2007-04-25 01:25
#35404 #35404
User since
2007-04-25
1 Artikel
BenutzerIn
[default_avatar]
Hallo

Hm. Dann hab ihc 2 Fragen:
1. Was ist der Unterschied zwischen $sth->mysql_insertid() oder $dbh->last_insert_id() ?

2. In welchen Fällen funktioniert das:

Fall1:
DB geöffnet: mit connect
(GANZ Viele Abfragen und Inserts mittels $sth und immer sth->finish;)

dann wieder $sth->prepare
$sth->execute
HIER MÜSSTE DER NEUE CODE REIN ODER?
$sth->finish


ODER

FAll2
DB geöffnet: mit connect
(GANZ Viele Abfragen und Inserts mittels $sth und immer sth->finish;)

dann das insert aber mittels $dbd->do()
Wie ist es dann ?


Danke für eure Hilfe.
Strat
 2007-04-26 12:35
#35405 #35405
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
da du $dbh->do( $insertSql ) fuer's insert verwendest, hilft dir $sth->mysql_insertid nichts, sondern du musst die letzte id von $dbh abholen ( $dbh->last_insert_id() ). das solltest du direkt nach dem do->( $insertSql ) machen.
das scheint der einzige unterschied zu sein. (ausser dass mysql_insertid nur fuer Nicht-MySql-Datenbanken verfuegbar ist, sondern die methode da meist anders heisst).\n\n

<!--EDIT|Strat|1177576586-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Froschpopo
 2007-04-26 13:36
#35406 #35406
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
dazu fällt mir auch eine frage ein:
Wie ist das eigentlich, wenn zwischen dem INSERT und dem last_insert_id() ein Datensatz angelegt wird? Es kommt sicherlich selte vor, dass ein Datensatz ausgerechnet in dieser Millisekunde angelegt wird. Aber möglich wäre es ja theoretisch schon! Empfielt sich ein LOCKING oder sollte man von last_insert_id() bei wichtigen Angelegenheiten absehen?
pq
 2007-04-26 15:34
#35407 #35407
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
vielleicht hast du's nicht ganz verstanden (wundert mich jetzt auch
nicht so sehr), aber genau dafuer ist die last insert id da, froschpopo.
lies nochmal mein posting von 22.04.2007, 13:15
die last_insert_id ist das, was man in der mysql-kommandozeile per
LAST_INSERT_ID() zurückbekommt. und das ist abhängig von deiner mysql-session,
dem äquivalent zu einem $dbh.\n\n

<!--EDIT|pq|1177587290-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-04-21 15:11.