Kom ihåg mig?
Home Menu

Menu


Jag har ett problem....

Ämnesverktyg Visningsalternativ
Oläst 2004-06-14, 18:38 #1
danielblixt danielblixt är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 26
danielblixt danielblixt är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 26
HEj!

Jag har slitit mitt hår i flera dagar med följande sats och kan inte komma på varför jag får ett felmeddelande vid uppdatering.

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC SQL Server Driver]Felaktigt COUNT-fält eller syntaxfel
/bilvard/insert.asp, line 10


Scriptet.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/BILVARD.asp" -->
<%
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_BILVARD_STRING
Recordset1.Source = "SELECT * FROM vardschema WHERE VARDSCHEMA_ID=" & Request.Querystring("SCHEMA_ID") & " "
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 3
Recordset1.Open()
Recordset1_numRows = 0
Recordset1("VECKA_ID")=Request.Form("VECKAID")
Recordset1("KLAR")=Request.Form("KLAR")
Recordset1("KLAR_PERS_ID")=Request.Form("PERSON_ID ")
Recordset1.Update
Recordset1.Close
redir = "default.asp?vecka=" & Request.Querystring("VECKA")
Response.Redirect(redir)
%>



Hoppas någon har nån lösning.

/Daniel Blixt, SKövde
danielblixt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-06-14, 19:23 #2
Max Max är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2003
Inlägg: 721
Max Max är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2003
Inlägg: 721
Felet blir ju när du försöker köra ditt query (rad 10). Jag skulle börja så här, steg för steg, för att felsöka:
1) Prova att skriva SQL-satsen utan request.querystring, dvs hårdkoda in ett värde och se om det fungerar då
2) kommentera bort raderna cursortyp, cursorlocation och locktype och se om det fung (default på dessa brukar räcka för ett läs-query)
3) Lägg in en kontroll att connection är uppe (men detta har du säkert redan kollat)

Jag skulle TRO att något av dessa kommer att visa felet, men jag vet ju inte vad du redan testat eftersom du bara nämner att du testat i flera dagar... Lycka till...
Max är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-06-14, 19:46 #3
danielblixt danielblixt är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 26
danielblixt danielblixt är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 26
Tack för tipsen.. Men jag har tyvärr redan provat dem.
Tilläggas kan också göra att alla andra databasscript på sajten fungerar utmärkt och den använder samma connection fil.

Här är en dump på tabellen det gäller.
CREATE TABLE [dbo].[VARDSCHEMA] (
[VARDSCHEMA_ID] [int] IDENTITY (1, 1) NOT NULL ,
[VECKA_ID] [int] NOT NULL ,
[AR] [int] NOT NULL ,
[BIL_ID] [int] NOT NULL ,
[ANSV_ID] [int] NOT NULL ,
[TYP_ID] [int] NULL ,
[KLAR] [int] NULL ,
[KLAR_DATUM] [datetime] NULL ,
[KLAR_PERS_ID] [int] NULL
) ON [PRIMARY]
GO
danielblixt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-06-14, 21:07 #4
Max Max är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2003
Inlägg: 721
Max Max är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2003
Inlägg: 721
Ja, då är det väl bara att backa ännu längre tillbaka... Testa "SELECT * FROM vardschema", kolla att kopplingen verkligen är uppe (det finns ju en property för det, kommer inte ihåg vad den heter) etc...
Max är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-06-14, 21:27 #5
danielblixt danielblixt är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 26
danielblixt danielblixt är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 26
Det är tyvärr inga som helst problem med connection.
Men jag provade ändå att köra en vanlig select sats och det fungerar utmärkt.
danielblixt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-06-14, 23:07 #6
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Se ALLTID till att validera alla requests innan du trycker in dom i sql satserna. Kör en trim på dom också innan.
Se upp för sql-injects om du kör sådär. Jag skulle med ganska lite kunskaper kunna radera hela din databas om du inte skyddar dig... h34r:

Jag brukar testa att skriva ut sql satsen i webläsaren och sedan klistra in den i SQL query analyzer och köra den därifrån. Då är det ganska lätt att utesluta syntaxfel eller datatypsfel iaf.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-06-15, 23:19 #7
danielblixt danielblixt är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 26
danielblixt danielblixt är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 26
Kan du förklara det där med VALIDERING lite bättre... Det är inte min starka sida..

/Daniel
danielblixt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-06-16, 09:57 #8
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Du gör nu så här:

Kod:
Recordset1.Source = "SELECT * FROM vardschema WHERE VARDSCHEMA_ID=" & Request.Querystring("SCHEMA_ID")
...och det är livsfarligt att bara ta den parameter som (någon) har skrivit i url'en och skicka in i din sql sats.

Anta att din url är www.xyz.se/sida.asp?VARDSCHEMA_ID=8376453

Om jag skriver in en sql sats, tex "0 or 1=1;DROP TABLE users--&apa=1" så blir det såhär

www.xyz.se/sida.asp?VARDSCHEMA_ID=0 or 1=1;DROP TABLE users--&apa=1

Din SQL som du kör nu blir således

Kod:
SELECT * FROM vardschema WHERE VARDSCHEMA_ID=0 or 1=1;DROP TABLE users--
Det är samma sak som att man kan logga in många oskyddade system genom att skriva texten

Kod:
' or 1=1--
så man blir det första användaren i ett oskyddat system.

Jaja, nog om detta nu.

Validering sa du, japp, typ att du först requestar ett värde och tilldelar en variabel som du sedan kollar så att den är ok, typ

Kod:
dim sInput
sInput = Request.Querystring("VARDSCHEMA_ID") 'hämta värde
sInput = trim(sInput) ' ta bort alla "trailing spaces" som webläsaren/användaren kan ha pillat dit
sInput = replace(sInput, "'", "&quote;") 'ersätter ' med "

Recordset1.Source = "SELECT * FROM vardschema WHERE VARDSCHEMA_ID=" & sInput
Nu skrev jag sInput valideringarna på olika rader för tydlighetens skull, och valideringarna i sig var bara exempel. Det du antagligen vill göra är att kolla så att ditt VARDSCHEMA_ID är numerisk, har en viss längd och uppfyller olika krav INNAN du kör den i din sql sats.
Robert är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:26.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017