---
title: "Fel i SQL-satsen?(ASP, Javascript)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/126233-fel-i-sql-satsen-asp-javascript"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Frella"
published: "2005-04-12T14:01:22.000Z"
updated: "2005-04-13T09:46:03.000Z"
replies: 6
views: 324
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/126233-fel-i-sql-satsen-asp-javascript"
---

# Fel i SQL-satsen?(ASP, Javascript)

## #1 — Frella, 2005-04-12T14:01Z

Har skapat en inloggningssida nu men får den inte att fungera, kanske är den helt åt helvete. Men det tror jag inte, den kommer aldrig till while-loopen och inga värden sätts in i db_pass tex.

Någon som vet vad felet är?

```
<%@ Language=JavaScript %>
<%
var Anv = Request("user");
var Pass = Request("pass");

var conn = Server.CreateObject("ADODB.Connection");
conn.open = "Driver={Microsoft Access Driver (*.mdb)};dbq=c:/inetpub/wwwroot/test/user.mdb";

var strSQL = "SELECT * FROM User WHERE User = '+Anv+'";
rsMedlemmar = conn.Execute(strSQL);

while(rsMedlemmar && !rsMedlemmar.EOF)
{
var db_pass = rsMedlemmar("Password");
var db_user = rsMedlemmar("User");

if(Anv == db_user)
{
	if(Pass == db_pass)
	{
		Response.Redirect("index.html");
	}
}
else
{
	Response.Redirect("default.asp");
}
rsMedlemmar.MoveNext();
}
%>
```

Permalänk: https://www.webforum.nu/p/126233

## #2 — Erik Juhlin, 2005-04-12T14:04Z

Det är nog så här du menar:

```
var strSQL = "SELECT * FROM User WHERE User = '"+Anv+"'";
```

Eller ännu hellre:

```
var strSQL = "SELECT * FROM User WHERE User = '"+Anv.replace(/\'/g, "'")+"'";
```

Tror det ska funka. Är inte helt säker på hur JScript funkar i ASP.

Permalänk: https://www.webforum.nu/p/1590915

## #3 — Frella, 2005-04-12T14:08Z

Den första satsen som du gav blir precis som innan, den verkar inte få in något så då omdirigerar den till index.html.

Den andra satsen frå jag error på, med objektet stöds inte.

Permalänk: https://www.webforum.nu/p/1590918

## #4 — Guffa, 2005-04-12T16:14Z

Du kan inte använda Javascript i ASP, däremot JScript:

\<%@ Language=JScript %\>

Att det inte fungerar med replace på Anv beror på att det är ett objekt av type IStringList, inte en sträng. Request.Form och Request.Querystring returnerar alltid en IStringList. Dessutom bör du inte använda Request(), utan specificera varifrån du vill hämta värdet.

Så här plockar du ut den första strängen ur objekten:

var Anv = Request.Form("user")(1);
var Pass = Request.Form("pass")(1);

Nu kan du använda Eriks kod, med den lilla modifieringen att den ersätter apostroferna med dubbla apostrofer istället för att ersätta apostroferna med apostrofer:

var strSQL = "SELECT \* FROM User WHERE User = '"+Anv.replace(/'/g, "''")+"'";

Nu är Anv och Pass strängar, så nu ska jämförelsen fungera också.

Varför loopar du igenom recordsetet? Det kan väl inte finnas flera användare med samma användarnamn?

Glöm inte att du måste stänga recordsetet och databaskopplingen innan du anropar redirect.

Permalänk: https://www.webforum.nu/p/1590968

## #5 — Frella, 2005-04-13T07:05Z

Tackar, fungerde perfekt nu att logga in om jag anger rätt user och password. Och om jag anger rätt User men fel pass så skickas den tillbaka till inloggningsrutan. Men skriver jag däremot fel användarnamn så får jag följande felmeddelande.

Feltyp:
ADODB.Field (0x800A0BCD)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/check.asp, line 15

```
<%@ Language=JScript %>
<%
var Anv = Request.Form("user")(1);
var Pass = Request.Form("pass")(1);

var conn = Server.CreateObject("ADODB.Connection");
conn.open = "Driver={Microsoft Access Driver (*.mdb)};dbq=c:/inetpub/wwwroot/test/user.mdb";

var strSQL = "SELECT * FROM User WHERE User = '"+Anv.replace(/'/g, "''")+"'";
rsLogin = conn.Execute(strSQL);

var db_pass = rsLogin("Password");
var db_user = rsLogin("User");

if(Anv == db_user && Pass == db_pass)
{
	rsLogin.Close();
	Response.Redirect("index.html");
}
else	
{	rsLogin.Close();
	Response.Redirect("default.asp");
}
%>
```

Permalänk: https://www.webforum.nu/p/1591185

## #6 — Frella, 2005-04-13T09:44Z

Nu fick jag till det, jag var tvungen att ha med while-loopen för att det skulle fungera.

Tack för övrig hjälp.

Permalänk: https://www.webforum.nu/p/1591252

## #7 — @nders, 2005-04-13T09:46Z

nej, du ska inte ha med while-loopen.

Lägg det i en if-sats istället, där du kollar om recordsetet är EOF.

Permalänk: https://www.webforum.nu/p/1591256

---

Tråden på webben: https://www.webforum.nu/amne/asp/126233-fel-i-sql-satsen-asp-javascript
