webForumDet fria alternativet

skriva över unik post i mySQL

ASP

10 svar · 305 visningar · startad av Johny.n

Medlem sedan mars 200216 inlägg
Frågan#1

Hej allihop.
Jag är ny på forumet, ganska ny på mySQL, och lite mindre ny på ASP :-)
Jag har ett problem med att uppdatera min mySQL databas. Jag använder SQL-kommandot "INSERT INTO osv.. så långt är allt väl. Men jag kan inte ersätta det unika ID-fältet. Jag får:
"Duplicate entry '9' for key 1".

Finns det någon bra väg runt det? Att först spara posten i sessions, sen ta bort den, och sist lägga in den nya posten verkar vara lite omständligt :-) Det måste finnas bättre sätt.
Hoppas att någon vet.

/J

Medlem sedan dec. 19998 277 inlägg
#2

Korspostning :l

Medlem sedan mars 2001309 inlägg
#3

Varför skulle du spara posten i en session ?

Det är väl bara att först göra en delete på posten med id 1 tex och direkt efter det en insert och ge den id 1.......

Medlem sedan juni 200032 967 inlägg
#4

Hm.

Är det inte UPDATE du är ute efter?
Du kan inte själv bestämma vilket id-nummer en ny post ska få om det är räknare/autonumber (eller vad det nu kan tänkas heta i MySQL).

UPDATE dinTabell SET Field1 = 1, Field2 = 2 WHERE ID = 1

Välkommen till webForum, Johny.n!

Mvh,

Medlem sedan mars 2002777 inlägg
#5

Du kan inte själv bestämma vilket id-nummer en ny post ska få om det är räknare/autonumber (eller vad det nu kan tänkas heta i MySQL).

I MySQL används auto_increment för att göra kolumnen till räknare. Den räknar vanligtvis från noll och uppåt och måste vara av numerisk typ.

Medlem sedan juni 20008 205 inlägg
#6

Ursprungligen av @nders Du kan inte själv bestämma vilket id-nummer en ny post ska få om det är räknare/autonumber (eller vad det nu kan tänkas heta i MySQL).

Som en fotnot så kan man tillägga att det faktiskt går.

Medlem sedan mars 200216 inlägg
#7

Tack allihop, men jag behöver nog lite mer hjälp.
Jo @nders, det är säkert UPDATE jag behöver. Nu har jag gjort såhär:

nySQL = "UPDATE tbluppg SET namn = '" & request.form("namn") & "',textMain = '" & request.form("textMain") & "', fodd = '" & request.form("fodd") & "', bildV = '" & request.form("bildV") & "', textH = '" & request.form("textH") & "', bildH = '" & request.form("bildH") & "', textV = '" & request.form("textV") & "' WHERE id =" & request.querystring("id")

nySQL.execute

Jag får då medelandet:
Körningsfel i Microsoft VBScript fel '800a01a8'
Objekt krävs.: 'UPDATE tbluppg SE'
/mittjobb/admin/testtest.asp, rad 22
(rad 22 är nySQL.execute)

Jag utelämnade ett fält i SQL-satsen, nämligen räknaren (id), när jag provade att ha den med fungerade det inte heller (vilket jag kan förstå).

*Hoppas på mer hjälp

/J

Medlem sedan juni 200032 967 inlägg
#8

Din SQL-fråga ser rätt ut (förutsatt att du har datatypen text/pm på alla fält du ska uppdatera), men du exekverar frågan på fel sätt.

Du skall använda ditt connectionobjekt för att exekvera din UPDATE.

Alltså:

objConn.Execute (nySQL)

objConn byter du ut mot det namn du använder.

spango: Cool, är det mySQL-specifikt? Där fick man lära sig något nytt. :)

Mvh,

Medlem sedan mars 2002777 inlägg
#9
Connect.execute(nySQL)

under förutsättning att ditt connectionobjekt är döpt till Connect.

Medlem sedan mars 200216 inlägg
#10

Tjohooo!!!

..där satt den. Tack så hemskt mycket allihop, särskilt @nders.
Det är tydligt att man får lära sig lite mer SQL om man använder ASP ihop med mySQL än ihop med Access.

Tack igen

/J

Medlem sedan mars 2002777 inlägg
#11

Det är tydligt att man får lära sig lite mer SQL om man använder ASP ihop med mySQL än ihop med Access.

I detta fallet med Update är det ingen skillnad mellan access och mysql. Den enda skillnaden är om du hade använt ett datumfält i din Update. I övrigt fungerar det på samma sätt.

250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)