Något knas!

ASP

6 svar · 424 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Trådstart#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.

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 874 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.

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.

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.

255 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)