Avatar billede tahoo Nybegynder
20. juli 2006 - 15:27 Der er 15 kommentarer

Mysql hent fra en tabel indsæt i en anden

Hej Eksperten

Hvordan henter jeg data fra en tabel i Mysql, og lægger den over i en anden tabel via asp..

Jeg har følgende kode:

<%

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL};SERVER=serverIP;DATABASE=db;UID=bruger;PWD=password;OPTION=1123"
Set rs = Server.CreateObject("ADODB.Recordset")

' her henter jeg data ud det virker fint...
strSQL = "Select * From produkt where produktid = 2"
rs.open strSQL, conn, 1, 3

'test om min data kommer rigtig ud.. - det virker fint...
response.write rs("sku")

' her prøver jeg så og sætte data ind i en andet tabel "indkob"
- det virker bare ikke - kan nogle hjælpe...

SQL = "INSERT INTO [indkob] (varenummer) VALUES("&rs("sku")&")"
rs.open strSQL, conn, 1, 3


set rs = nothing
Conn.Close
set strSQL = nothing

%>
Avatar billede plx Nybegynder
20. juli 2006 - 15:38 #1
mysql bruger ikke firkantede parenteser, men `backticks`

hvis du ikke har brug for at trække værdien ud i scriptet, kan du gøre det direkte i sqlen

INSERT INTO `indkob` (varenummer) (SELECT sku FROM produkt WHERE produktid=2)
Avatar billede nielle Nybegynder
20. juli 2006 - 15:49 #2
Iøvrigt er der slet ingen grund til at bruge hverken [firkantede parenteser] eller `backticks` i dette eksempel. De er kun nødvendige hvis man har anvendt et reserevert ord som tabel- eller feltnavn. Tabelnavnet indkob er ikke er reserveret SQL-ord.
Avatar billede tahoo Nybegynder
20. juli 2006 - 17:20 #3
Mange tak for jeres hjælp men når jeg gør følgende:

INSERT INTO indkob (varenummer) (SELECT sku FROM produkt WHERE produktid=2)
rs.open strSQL, conn, 1, 3

får jeg følgende fejl:

Microsoft VBScript compilation error '800a0401'

Expected end of statement
INSERT INTO indkob (varenummer) (SELECT sku FROM produkt WHERE produktid=2)
------------^

hvad nu hvis jeg skal flytte flere ting..
gør jeg så sådan: ?

INSERT INTO indkob (varenummer, pris) (SELECT sku, prisprstk FROM produkt WHERE produktid=2)
Avatar billede tahoo Nybegynder
20. juli 2006 - 17:21 #4
det ser ud til det er "indkob" den ikke er glad for...
Avatar billede nielle Nybegynder
20. juli 2006 - 19:17 #5
Hvordan ser din ASP kode ud?
Avatar billede tahoo Nybegynder
21. juli 2006 - 10:52 #6
Sådan ser den ud...

<%

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL};SERVER=mysqlserver;DATABASE=;UID=;PWD=;OPTION=1123"
Set rs = Server.CreateObject("ADODB.Recordset")

INSERT into indkob (varenummer) (SELECT sku FROM produkt WHERE produktid=2)
rs.open strSQL, conn, 1, 3


set rs = nothing
Conn.Close
set strSQL = nothing

%>
Avatar billede tahoo Nybegynder
21. juli 2006 - 14:00 #7
kører jeg :

INSERT into indkob (varenummer) (SELECT SKU FROM produkt WHERE produktid=2)

som en SQL sætning inde i phpmyadmin, virker den fint...

men når jeg gør det over asp får jeg følgende fejl:

INSERT into indkob (varenummer) (SELECT SKU FROM produkt WHERE produktid=2)
------------^
Avatar billede tahoo Nybegynder
21. juli 2006 - 14:00 #8
Microsoft VBScript compilation error '800a0401'

Expected end of statement
Avatar billede tahoo Nybegynder
21. juli 2006 - 14:06 #9
okay, har fundet fejlen.. den var ret dum...

jeg havde ikke sat strSQL = foran...

Så nu virker det, men hvad nu hvis jeg skal have flere med...
Avatar billede tahoo Nybegynder
21. juli 2006 - 14:10 #10
> nielle

okay det virker nu.. Vil du lave et svar... -

hvis jeg nu havde brug for at hente noget data ud med response.write, så jeg ikke kunne gøre det direkte i SQL, hvordan skulle det så se ud...
Avatar billede nielle Nybegynder
21. juli 2006 - 15:42 #11
Det er nu plx som kom med løsningen, og jeg bidrog bare med nogle enkelte uddybende betragtninger.
Avatar billede tahoo Nybegynder
21. juli 2006 - 16:01 #12
okay, vil i så ikke lave et svar begge to...
Avatar billede nielle Nybegynder
25. juli 2006 - 22:09 #13
Ok :^)
Avatar billede nielle Nybegynder
25. juli 2006 - 22:12 #14
> hvis jeg nu havde brug for at hente noget data ud med response.write, så jeg ikke kunne gøre det direkte i SQL, hvordan skulle det så se ud...

F.eks. sådan:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL};SERVER=serverIP;DATABASE=db;UID=bruger;PWD=password;OPTION=1123"
Set rs = Server.CreateObject("ADODB.Recordset")

' her henter jeg data ud det virker fint...
strSQL = "SELECT sku FROM produkt WHERE produktid = 2"
rs.Open strSQL, Conn, 1, 3

' test om min data kommer rigtig ud.. - det virker fint...
Response.Write rs("sku")

' her prøver jeg så og sætte data ind i en andet tabel "indkob"

SQL = "INSERT INTO indkob (varenummer) VALUES (" & rs("sku") & ")"
rs.Open strSQL, Conn, 1, 3

Set rs = Nothing

Conn.Close
Conn = Nothing
%>
Avatar billede tahoo Nybegynder
26. juli 2006 - 09:21 #15
Mange tak - PLX vil du også lave et svar....
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester