webForumDet fria alternativet

SQL update sats som inte funkar

ASP

28 svar · 569 visningar · startad av His Divine Shadow

Medlem sedan sep. 20004 079 inlägg
Frågan#1

OK, våra trogna tittare från förra tråden vet att jag bytte ut recordset's uåpdatering mot en SQL UPDATE sats

Men nu har jag problem med den, får ett sånt här meddelande:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)
[TCX][MyODBC]You have an error in your SQL syntax near 'Chambers (White Dwarf 126)Description = Blablahblahblah' at line 1
/wh40k/admin/modify.asp, line 224

Såhär ser koden ut:

sql = "UPDATE DATA SET Name = " & Request("Name")
	IF Request("Category") = "" THEN
		sql = sql & "Category = " & Request("AddCategory")
	ELSE
		sql = sql & "Category = " & Request("Category")
	END IF
	IF Request("SubCategory") = "" THEN
		sql = sql & "SubCategory = " & Request("AddSubCategory")
	ELSE
		sql = sql & "SubCategory = " & Request("SubCategory")
	END IF
	IF Request("Species") = "" THEN
		sql = sql & "Species = " & Request("AddSpecies")
	ELSE
		sql = sql & "Species = " & Request("Species")
	END IF
	IF NOT Request("Image") = "" THEN
		sql = sql & "Image = " & Request("Image")
	END IF	
		sql = sql & "Source = " & Request("Source")
		sql = sql & "Description = " & Request("Description")
		sql = sql & "," 
		sql = sql & " WHERE ID = " & Request("ID") & ""
		
Conn.Execute(sql)
Medlem sedan dec. 20003 887 inlägg
#2

Jag antar att du har en eller flera strängar, så det är nog på sin plats att sätta ut ett par apostrofer här och var.

Medlem sedan sep. 20004 079 inlägg
#3

Hur går denna syntax till?

Såhär kanske mellan raderna?
sql = sql & "',"

Medlem sedan maj 20018 027 inlägg
#4

sql = sql & "'" & strvarde & "'"

Notera att det är en enkelfnutt (') mellan dubbelfnuttarna.

Medlem sedan sep. 20004 079 inlägg
#5

OK, men det där passar inte riktigt in på min SQL sats:
sql = sql & "Category = " & Request("Category")

Försöker jag med:
sql = sql & "Category = "'" & Request("Category") & "'"

Blir det också fel.

Medlem sedan juni 200032 967 inlägg
#6

Du saknar en massa kommatecken också.

UPDATE balumba SET fält1 = 'värde1', fält2 = 'värde2', fält3 = 'värde3' WHERE ID=1

Skriv ut den färdiga SQL-frågan med Response.Write istället för att exekvera den. Då ser du mycket lättare vad det är som är knasigt med den.

Mvh,

Medlem sedan dec. 20003 887 inlägg
#7
sql = sql & "Category = '" & Request("Category") & "'"
Medlem sedan sep. 20004 079 inlägg
#8

Tja nu klagar det på denna rad:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/wh40k/admin/modify.asp, line 210, column 57
sql = sql & "SubCategory = '" & Request("AddSubCategory")) & "'"

Kolumn 57 är fet.

Såhär ser hela koden ut nu:

sql = "UPDATE DATA SET Name = '" & Request("Name") & "'"
		sql = sql & "," 
	IF Request("Category") = "" THEN
		sql = sql & "Category = '" & Request("AddCategory") & "'"
		sql = sql & "," 
	ELSE
		sql = sql & "Category = '" & Request("Category") & "'"
		sql = sql & "," 
	END IF
	IF Request("SubCategory") = "" THEN
		sql = sql & "SubCategory = '" & Request("AddSubCategory")) & "'"
		sql = sql & "," 
	ELSE
		sql = sql & "SubCategory = '" & Request("SubCategory")) & "'"
		sql = sql & "," 
	END IF
	IF Request("Species") = "" THEN
		sql = sql & "Species = '" & Request("AddSpecies")) & "'"
		sql = sql & "," 
	ELSE
		sql = sql & "Species = '" & Request("Species")) & "'"
		sql = sql & "," 
	END IF
	IF NOT Request("Image") = "" THEN
		sql = sql & "Image = '" & Request("Image")) & "'"
	END IF	
		sql = sql & "," 
		sql = sql & "Source = '" & Request("Source")) & "'"
		sql = sql & "," 
		sql = sql & "Description = " & Request("Description")
		sql = sql & "," 
		sql = sql & " WHERE ID = " & Request("ID")
		
response.Write sql
Medlem sedan mars 20015 287 inlägg
#9

sql = sql & "SubCategory = '" & Request("AddSubCategory")) & "'"

Du har ett ) för mycket, samma sak på flera av dina satser.

Medlem sedan mars 20015 287 inlägg
#10

Kanske:

sql = "UPDATE DATA SET Name = '" & Request("Name") & "',"
	IF Request("Category") = "" THEN
		sql = sql & "Category = '" & Request("AddCategory") & "',"
	ELSE
		sql = sql & "Category = '" & Request("Category") & "',"
	END IF
	IF Request("SubCategory") = "" THEN
		sql = sql & "SubCategory = '" & Request("AddSubCategory") & "',"
	ELSE
		sql = sql & "SubCategory = '" & Request("SubCategory") & "',"
	END IF
	IF Request("Species") = "" THEN
		sql = sql & "Species = '" & Request("AddSpecies") & "'," 
	ELSE
		sql = sql & "Species = '" & Request("Species") & "',"
	END IF
	IF NOT Request("Image") = "" THEN
		sql = sql & "Image = '" & Request("Image") & "',"
	END IF	
		sql = sql & "Source = '" & Request("Source") & "'," 
		sql = sql & "Description = " & Request("Description") & "," 
		sql = sql & " WHERE ID = " & Request("ID")
		
response.Write sql
Medlem sedan sep. 20004 079 inlägg
#11

Ah, stavfel, man är en riktig klant...

Hursomhelst verkar det funka, förutom att när det finns ' tecken i fältet "description" så funkar det inte.

Medlem sedan dec. 20002 526 inlägg
#12

gor en replace.... :)

sql = sql & "Description = Replace(Request("Description"),"'","''")
Medlem sedan sep. 20004 079 inlägg
#13

Jo tänkte på det men visste inte hur, dendär satsen gav errors, denhär som jag försökte mig på var inte bättre den:
sql = sql & "Description = " & Replace(Request("Description"),"'","''") & ","

Medlem sedan juni 200032 967 inlägg
#14
sql = sql & "Description = '" & Replace(Request("Description"),"'","''") & "',"

Apostrofer runt strängvärden.

Medlem sedan mars 20015 287 inlägg
#15

Om Description är en sträng ska du ha apostrofer även där...
/r precis ja. ;)

Medlem sedan dec. 20002 526 inlägg
#16

oj, glomde att skriva fullstandigt, hehe.... tankte mer pa replacen!

Medlem sedan sep. 20004 079 inlägg
#17

Går framåt, men nu är det nått syntax error med den sista raden:
sql = sql & " WHERE ID = '" & Request("ID") & "'"

Medlem sedan dec. 20002 526 inlägg
#18

Int ska INTE ha ' fnuttarna runt, skriv

sql = sql & " WHERE ID = " & Request("ID") & ""
Medlem sedan sep. 20004 079 inlägg
#19

Jo, prövade det, samma fel ännu:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)
[TCX][MyODBC]You have an error in your SQL syntax near 'WHERE ID = 4' at line 1

Medlem sedan dec. 20002 526 inlägg
#20

hur ser hela koden ut nu?

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)