webForumDet fria alternativet

Nu funkar det...men nåt annat strular....

ASP

110 svar · 1 504 visningar · startad av BulletBoyCrime

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

JA! Nu funkar min connection till databasen :e
Skrev in {MySQL ODBC 3.51 Driver} i driver=""
Tack!

Men nu strular detta.........

Set RecSet = Server.CreateObject("ABODB.Recordset")

Borde inte detta funka? :q

Medlem sedan juni 20022 599 inlägg
#2

Borde inte detta funka?

Nix, ADO:n är tyvärr väldigt kinkig med stavningen ..

Medlem sedan mars 2003970 inlägg
#3

OJ................... :r
jag hade visst skrivit ABODB, sorry...... jag vet ju att det heter ADODB. Tack! :birp

Medlem sedan mars 2003970 inlägg
#4

Fan...problemen slutar aldrig.....line 14 verkar nu vara felet.
Där står det bara

RecSet.AddNew

Jag får detta felmeddelandet:

ADODB.Recordset error '800a0cb3'

Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.

/crimea bay/registered.asp, line 14

Jag kör windows 98 och PWS, har detta något att göra med saken?

Medlem sedan juni 200032 967 inlägg
#5

Du kan inte använda .AddNew för att lägga till data till en tabell i en MySQL-databas. Du måste använda riktiga SQL-frågor som INSERT för att lägga till data, UPDATE för att uppdatera information i en befintlig post, och DELETE för att radera poster.

(Kul att se att du kommer framåt i alla fall! :bire)

Mvh

Medlem sedan mars 2003970 inlägg
#6

Ah...............Då får jag ändra lite sidor kod............ :(
Men tusan vad härligt, nu kanske det funkar :e

@nders skrev:

(Kul att se att du kommer framåt i alla fall :bire)

:birp

Medlem sedan mars 2003970 inlägg
#7

Testade men fick nu detta felmeddelande:

Körningsfel i Microsoft VBScript error '800a01b6'

Objektet stöder inte egenskapen eller metoden.: 'INSERT'

/crimea bay/registered.asp, line 14

Vad ska jag göra då :q

Medlem sedan juni 200032 967 inlägg
#8

Du ska visa kod. ;)

Men, jag tror att du missuppfattade mig. Du måste, istället för att använda .AddNew, skriva och exekvera en INSERT-fråga. Exempel:

strSQL = "INSERT INTO minTabell (fält1, fält2) VALUES ('" & variabel1 & "', '" & variabel2 & "')"
mittConnectionObjekt.Execute (strSQL)

Mvh,

Medlem sedan mars 2003970 inlägg
#9

Åh :r
Tack!

Medlem sedan mars 2003970 inlägg
#10

Lite väl mycket kod nu så varning, men jag gjorde såhär:

RecSet.INSERT INTO players (name, password, title, perk, realname, phone, country, cash, health, curhealth, wepskill, expskill, protect, spyskill, ccskill, hokskill, driskill, druskill, lawskill, energymax, energycur, honor) VALUES ('" & Name & "', '" & Password & "', '" & Title & "', '" & Perk & "', '" & Realname & "', '" & Phone & "', '" & Country & "', '" & Cash & "', '" & Health & "', '" & Curhealth & "', '" & wski & "', '" & eski & "', '" & pski & "', '" & sski & "', '" & cski & "', '" & hski & "', '" & dski & "', '" & duski & "', '" & lski & "', '" & enmax & "', '" & encur & "', '" & honor & "') Connect.Execute

Får detta felmeddelande:

Kompileringsfel i Microsoft VBScript error '800a0401'

Slut på programsats förväntas.

/crimea bay/registered.asp, line 145

RecSet.INSERT INTO players (name, password, title, perk, realname, phone blablabla..................
-------------------^

Vad är fel?
Jag kan tänka mig att nåt är fel med Connect.Execute, men det är den variablen jag använder för att connecta till databasen.....eller hur ska jag göra?

Medlem sedan mars 2003970 inlägg
#11

Jäklar......ursäkta för den långa koden..........

Medlem sedan juni 200032 967 inlägg
#12

Om du tittar i mitt förra inlägg så ser du hur du ska använda INSERT INTO, dvs ungefär så här:

strSQL = "INSERT INTO players (name, password, title, perk, realname, phone, country, " & _
" cash, health, curhealth, wepskill, expskill, protect, spyskill, ccskill, hokskill, driskill, " & _
" druskill, lawskill, energymax, energycur, honor) VALUES ('" & Name & "', '" & Password & "', " & _ 
"'" & Title & "', '" & Perk & "', '" & Realname & "', '" & Phone & "', '" & Country & "', '" & Cash & "', " & _
" '" & Health & "', '" & Curhealth & "', '" & wski & "', '" & eski & "', '" & pski & "', '" & sski & "', " & _
"'" & cski & "', '" & hski & "', '" & dski & "', '" & duski & "', '" & lski & "', '" & enmax & "', '" & encur & "', '" & honor & "') "
Connect.Execute (strSQL)

Dock finns vissa klurigheter (duh ;) ) med att lägga till data med SQL-frågor. Jag ser att du har lagt till apostrofer (') runt varje värde i SQL-frågan. Det är (antagligen) inte rätt. Det ser nämligen olika ut beroende på vad fälten i tabellen är för datatyp.

Om fältet i tabellen är av typen varchar / char, datetime eller någon texttyp skall du ha apostrofer runt värdet.
Om fältet i tabellen är av taltyp skall du inte ha apostrofer.

För att exemplifiera:

strSQL = "INSERT INTO tabellen (talfält, textfält, datumfält) VALUES (3, 'Foo et bar', '2002-11-05')"
 ' eller, med asp-variabler
strSQL = "INSERT INTO tabellen (talfält, textfält, datumfält) VALUES (" & talvariabeln & ", '" & textvariabeln & "', '" & datumvariabeln & "')"

Ja, jag vet, det blir mycket strul, men det kommer man inte förbi.

Nästa steg är att se till att apostrofer går att ha i strängar att lägga in i tabellen, men också av säkerhetsskäl. Vi gör en liten funktion för detta.

Function SQLSafe(strText)
     SQLSafe = Replace (strText, "'", "''")
End function

Funktionen ersätter alltså en apostrof med två. Den ändrar dock inte värdet, utan säger bara till SQL-tolken att här kommer en apostrof som tillhör strängen, den skall inte tolkas som slut på inmatning. Funktionen använder du så här:

strSQL = "INSERT INTO tabellen (talfält, textfält, datumfält) VALUES (" & talvariabeln & ", '" & [b]SQLSafe(textvariabeln)[/b] & "', '" & datumvariabeln & "')"

Man bör, av säkerhetsskäl, gör apostrofersättningen på alla värden du inte själv har koll på, dvs allt som kommer från ett formulär eller liknande.

Det blev ett ganska långt inlägg, men jag hoppas jag gett dig något att tugga på i alla fall. :bire

red: Hmm, det blev lite bred och oöverskådligt, jag delar upp det på några rader i stället.

Mvh,

Medlem sedan mars 2003970 inlägg
#13

Nåt att tugga på blev det iallafall.......ska testa ;) Tack! :birp

Medlem sedan mars 2003970 inlägg
#14

Står samma felmeddelande x( grrrrrr..............
Jag använder EditPlus, där står alla rader kod i syntaxfärg. När jag lägger in den första apostrofen i INSERT INTO så blir färgen grön.
Färgen håller i sig, även Connect.Execute blir grön.
Kan detta ha något att göra med saken? :q
Tack! :bire

Medlem sedan mars 20015 287 inlägg
#15

första apostrofen?

Medlem sedan mars 2003970 inlägg
#16

Emmm, ja första värdet då.

VALUES ([u]'[/U]" & SQLSafeName

den understrukna alltså där, den apostrofen.

Medlem sedan nov. 20017 144 inlägg
#17

testa att [klammra] ditt kolumnnamn som heter "name".
Bifoga hela sql-satsen som du kör med nu kanske.

Medlem sedan mars 2003970 inlägg
#18

menar du i mySQL eller själva kodningen :q

Medlem sedan mars 2003970 inlägg
#19

Nån som kan svaret på det? Jag kan inte vara inne så mycket på nätet mer, så jag blir otåligare än vad jag redan är :e
men det kan inte hjälpas, kan nån svara :q

Medlem sedan dec. 19996 522 inlägg
#20

i sql frågan

strSQL = "INSERT INTO players ([name],[password]

osv

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