Frågan 11 apr. 2001 16:07 #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?
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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
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.
Brimba Medlem sedan dec. 1999 5 875 inlägg 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?
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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]
Varför ska man skriva så LarsG? Det är ju bara det första inlägget som måste vara kort.
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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