Avatar billede baitianlong Nybegynder
11. april 2005 - 22:49 Der er 12 kommentarer og
1 løsning

problemer med ' i sql streng

Jeg har denne linie:

Conn.Execute("INSERT INTO airport(faa, city, country) values('" & code & "', '" & town & "', '" & country & "')")

Men town kan godt være f.eks Cote D'Ivoire, og så ødelægger ' det :)

Hvad gør jeg ved det ?
Avatar billede hyberpreprocessor Nybegynder
11. april 2005 - 22:54 #1
Du replacer bare ' med \' og omvendt når du henter data.
Avatar billede baitianlong Nybegynder
11. april 2005 - 22:59 #2
town = Replace(Request.QueryString("town"), "'", "\'")

Men det virker stadig ikke:

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-standard-log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Ivoire')' at line 1
Avatar billede freakstyle Nybegynder
11. april 2005 - 23:00 #3
replace med 2 ', altså replace(str, "'", "''")
Avatar billede hyberpreprocessor Nybegynder
11. april 2005 - 23:01 #4
hmm, ja. Fandt denne her i mit bibliotek, prøv den:

replace(tmpString, "'", "&#39")
Avatar billede hyberpreprocessor Nybegynder
11. april 2005 - 23:02 #5
Function RTEsafe(strText)

  Dim tmpString

  tmpString = trim(strText)

  'convert all types of single quotes
  tmpString = replace(tmpString, chr(145), chr(39))
  tmpString = replace(tmpString, chr(146), chr(39))
  tmpString = replace(tmpString, "'", "&#39")

  ' convert all types of double quotes
  tmpString = replace(tmpString, chr(147), chr(34))
  tmpString = replace(tmpString, chr(148), chr(34))
  tmpString = replace(tmpString, """", "\""")

  ' replace carriage returns & line feeds
  tmpString = replace(tmpString, chr(10), "<br />")
  tmpString = replace(tmpString, chr(13), " ")
 
  RTEsafe = tmpString
End function
Avatar billede hyberpreprocessor Nybegynder
11. april 2005 - 23:02 #6
eller

Server.HTMLEncode(strMessage)
Avatar billede baitianlong Nybegynder
11. april 2005 - 23:03 #7
Stadig samme fejl, desværre

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
Avatar billede baitianlong Nybegynder
11. april 2005 - 23:09 #8
Nu kærer jeg med town = Server.HTMLEncode(Request.QueryString("town"))

Og jeg udskriver sql'en for "sjov"

sqlstr = "INSERT INTO airport(faa, city, country) values('" & code & "', '" & town & "', '" & country & "')"
Response.Write(sqlstr)
Conn.Execute(sqlstr)

Det giver:

INSERT INTO airport(faa, city, country) values('ABJ', 'Abidjan', 'Cote D'Ivoire')
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-standard-log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Ivoire')' at line 1
Avatar billede baitianlong Nybegynder
11. april 2005 - 23:23 #9
Nu har jeg røvet alle jeres løsninger, men ingen af dem fungerer.

Senest var det funktionen, men ak:

http://www.legendenet.dk/airport.asp?code=ABJ&town=Abidjan&country=Cote%20D'Ivoire
Avatar billede baitianlong Nybegynder
11. april 2005 - 23:28 #10
Cote D&#39;Ivoire skriver den i databasen nu, og det er vel fint nok. Problemet lå delvist i at jeg troede Cote D'Ivoire var town variablen, men det var country :P Ja, jeg skal have tæsk, ved det godt :)) Smid et svar hyberpreprocessor...
Avatar billede hyberpreprocessor Nybegynder
11. april 2005 - 23:30 #11
hehe okay :)
Avatar billede baitianlong Nybegynder
11. april 2005 - 23:32 #12
:)
Avatar billede hyberpreprocessor Nybegynder
12. april 2005 - 00:34 #13
og tak for points ~)
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