18. marts 2001 - 21:33Der er
27 kommentarer og 6 løsninger
find sidste ID
Jeg har en MySql Db med en tabl der heder user, i denne taben er der et felt der heder userID , detter felt er af typen int(6) og auto_increment
når nu en ny bruger bliver oprettet i basen vil jeg gerne have at vide hvilket userID nr brugern fik, jeg mener at have fundet ud af at det er noget med last_insert_id() eller mysql_insert_id() !! Er her nogen der kan fortælle hvordan jeg gør ?
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
Netsrac, min lille artikel handler om Access DB-er og virker formentlig ikke ved MySql. Problemet er at mysql_insert_id ikke er tilgængelig gennem ODBC driveren, som man vel sagtens bruger sammen med ASP. Og stigc, uden at undersøge det, mener jeg din link kun virker med MsSql.
Jeg kender ikke nogen god løsning til ASP/Mysql - men lytter med :)
AddNew tilføjer en ny record til RecordsSet\'et og placerer cursoren på denne.
Hvis en anden bruger efterfølgende tilføjer en record vil det ikke ha\' nogen betydning; cursoren står STADIG på den record man netop har indsat.
Man skal især lige holde øje med parametrene på Open metoden (,1 ,2), som specifikerer cursortype og locktype.
At åbne et recordset på denne måde er en del langsommere end en \"standard\" forward-only cursor, så man skal generelt prøve at undgå det, med mindre man altså SKAL bruge ID\'et på den record man netop har indsat.
Er man mere til SQL-sætninger kan det også gøres på denne måde (frit efter hovedet, så der KAN være syntax-fejl osv.):
rs2.Open \"INSERT INTO tblMyTable bla bla bla\", Conn, 1, 3 Set rstNewID = Conn.Execute(\"SELECT @@IDENTITY@@ AS NewID\") Response.Write \"NewID:\" & rstNewID(\"NewID\")
Du laver en sql som \"INSERT INTO ..\" og som det næste laver du en \"SELECT LAST_INSERT_ID() AS id\" på samme connection. Så har du den - husk lige at den sidste også afleverer et recordset som enhver anden SELECT. Virker med garanti :)
perla: der er ikke transaktioner i MySqls nuværende versioner. Du kan låse tabellen, men når der nu er indbygget en \"gratis\" funktion, er det den der skal bruges.
jeg fandt denne løsning, jeg kunne godt nok ikke finde måde hvor med jeg kunne se det nye id-nr men denne løsning kunne i det mindste smide det nye nummer in i den anden tabel
Nu fik jeg lejlighed til at afprøve det, og jeg får nedenstående lidt omskrevne til at virke perfekt. Den indsætter, og jeg får id-et ud hver gang, det bliver bare større og større.... Det er også på en PWS (fra 1997 til Win95). Jeg har ingen anelse om hvad der er galt hos dig...
<html> <head> <title>ASP/Mysql</title> </head>
<body bgcolor=\"#FFFFFF\"> <% Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"driver={MySql};server=10.70.1.2;database=test_ej\" SQLstmt = \"INSERT INTO navne (navn) values (\'Peter\')\" response.write sqlstmt Conn.Execute (SQLstmt) SQL =\"SELECT LAST_INSERT_ID() AS id\" Conn.Execute (SQL) Set rs = conn.Execute(SQL) id = rs(\"id\") response.write id conn.Close Set conn = nothing Set SQLstmt = nothing Set SQL = nothing %> </body> </html>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.