webForumDet fria alternativet

Något knas!

ASPur ASP

6 svar · 400 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#1

Om jag inte har några nyheter i databasen och ska lägga till en nyhet. Så får inte den första innehålla mycket text. Men alla andra nyheter jag skriver kan innehålla hur mycket text som helst. Varför det?

Medlem sedan dec. 200012 464 inlägg
#2

Det skall inte ha någon betydelse att det är första posten du lägger in. Så det är förmodligen något annat problem.

Vad får du för fel när du misslyckas. Det kan också vara intressant att se den bit av koden där du lagrar nyheter.

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20011 140 inlägg
#3

Ok, här kommer felmeddelandet:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket ''sdofpj qifj qaidsh asdk qnwidhq wdpkqns duansd uihwqd ipa'isj diapäsdj ijwasdmna sdin qiwpdhjq pdwij aipsdj aipsjd pqjd qpjdwqdwqipdwoij qjdwjqdw qipd jqidi qijd iqpwdjq wdij aijsda ishd uqw dh qw9r+ r1r2 qåwie 0qwi e+q09wu eqowej aksdn ipahjd 8qhj2 öqojwd'. 

/asp/test/admin/news-add2.asp, rad 32

Och här kommer koden:

<% Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=C:\Inetpub\wwwroot\asp\test\db\db.mdb"
Set objRecSet = Server.CreateObject("ADODB.Recordset") %>

<%
news = Request.Form("news")
topic = Request.Form("topic")
datum = Request.Form("datum")
writer = Request.Form("writer")

SQL = "INSERT INTO news (news, topic, datum, writer) VALUES ('"& news &"', '"& topic &"', '"& datum &"', '"& writer &"')"
objConn.Execute SQL

objConn.Close
Set objConn = Nothing
%>

<% response.redirect "default.asp" %>

adovbs.inc är inkluderad och jag har <% response.buffer = true %> högst upp på sidan.

Medlem sedan dec. 19995 875 inlägg
#4

det kan inte vara ':en? prova att skriva ett långt inlägg bestående av bara a:n

Sedan undrar jag vad det är för typ av fält du har i databasen.

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=17" TARGET=_blank>Vilket namn är fräckast? (bire)
</A>Hur stort är världens lager av atombomber?

Medlem sedan dec. 200012 464 inlägg
#5

Problemet är att din text innehåller apostrofer. Du får byta ut alla förekomster till dubbla.

news = replace(Request.Form("news"),"'","''")
topic = replace(Request.Form("topic"),"'","''")
datum = Request.Form("datum")
writer = replace(Request.Form("writer"),"'","''")

Det fungerar så i SQL att i en sträng så tolkas dubbla apostrofer som en apostrof.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 11 apr 2001]

Medlem sedan jan. 20011 140 inlägg
#6

Varför ska man skriva så LarsG? Det är ju bara det första inlägget som måste vara kort.

Medlem sedan dec. 200012 464 inlägg
#7

Nej, det har inte med längden att göra. Jag kan försöka att exemplifiera.

Antag att du har ett fält vars värde du vill stoppa in i en tabell. Då skriver man t.ex.

f = request.form("f")
sql = "insert into t(f) values('" _
& f & "')"
Om nu fältet innehåller texten a'c så kommer variabeln sql att innehålla värdet

insert into t(f) values('a'c')

vilket tolkas som att strängen slutar efter a och sedan kommer det något som sql-tolken inte förstår. Om man istället skriver

insert into t(f) values('a''c')

så tolkas det som strängen a'c. Det är bara en konvention som man valde när SQL definierades.

------------------
essentitia preter non sans multiplicandum

134 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)