Hej!
Jag har denna
Det fungerar bra, men är det ett "&" eller ett " ' "(tex A & B's Port City Tatoo) i variabeln name(och då även Name i databasen), så fungerar det inte alls, inget felmeddelande, men det blir ingen träff, trots att det finns en rad i databasen som passar.
<%
SQL = "SELECT * FROM Brunswick WHERE Name = '" & name & "' AND City = '" & city & "' AND Phone = '" & phone & "'"
ASP, Access
@ndersMedlem sedan juni 200032 969 inlägg Fråga 1: har du html-encodat den texten du stoppat in i databasen? Gör inte det.
Fråga 2: har du escapeat apostrofer innan du ställer SQL-frågan?
Fråga 3: hur ser den färdiga SQL-frågan ut?`
Mvh,
Hej!
Tack för frågorna. :)
Svar 1:
Nej, inte om jag stoppar i nya data.
Databasen är befintlig, men det ser "vanligt" ut om jag tittar i databasfälten, dvs bara vanliga bokstäver och tecken, som det ser ut på skärmen.
Svar 2:
Måste erkänna att jag inte förstår frågan, så det har jag troligtvis inte gjort, det ser ut tex såhär:
name = Request.QueryString("name")
Fråga3:
För en fungerande utan & eller ' ser det ut såhär
SQL-query: SELECT * FROM Brunswick WHERE Name = 'A1 Repossessions' AND City = 'Brun' AND Phone = '264-1234'
För en med ' ser det ut såhär (ska vara: Aaron's Sales & Lease Ownership)
SQL-query: SELECT * FROM Brunswick WHERE Name = 'Aaron's Sales ' AND City = '' AND Phone = '554-1234'
Och för en med & (ska vara: A G Edwards & Sons Inc )
SQL-query: SELECT * FROM Brunswick WHERE Name = 'A G Edwards ' AND City = '' AND Phone = '261-1234'
@ndersMedlem sedan juni 200032 969 inlägg 1: oki!
2: Du måste byta ut alla förekomster av apostrof mot två. Det är för att inte SQL-frågan skall förstöras, då en enkel apostrof tolkas som slut på strängen. Du lägger ju in alla text-värden mellan apostrofer.
name = Replace(Request.QueryString("name"), "'", "''")
Detta förändrar inte datat, utan ser endast till att strängen tolkas korrekt i SQL-frågan.
3: Det där med & förstår jag inte. Det är inget speciellt med &.
Jag slänger fram en till fråga:
4: Du har väl inte med On Error Resume Next i koden?
Mvh,
Hej igen! :)
lade in din kod, så nu funkar det med: ' :)
Jodå, nåt speciellt är det med "&", jag lovar :)
4
Nej, nån sån finns inte. Lägger in hela koden nedan, kanske har jag med något annat dumt.
<% Response.Buffer = True %>
<!-- #include file="adovbs.inc" -->
<BODY bgcolor="#FFFFCC" alink="#00000" vlink="#00000">
<%Category=request.form("category")%>
<%
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("phone_numbers.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
name = Replace(Request.QueryString("name"), "'", "''")
city = Request.QueryString("city")
phone = Request.QueryString("phone")
SQL = "SELECT * FROM Brunswick WHERE Name = '" & name & "' AND City = '" & city & "' AND Phone = '" & phone & "'"
%>
SQL-query: <%=SQL%>
<% RecSet.Open SQL, Databas, 3, 3 %>
<TABLE>
<TR>
<TD>Type</TD>
<TD>
<FORM METHOD="POST" ACTION="addcrsedit.asp">
<select name="typ">
<%if RecSet("Type")="B" then %>
<option selected>B</option>
<%else%>
<option>B</option>
<%end if%>
<%if RecSet("Type")="R" then %>
<option selected>R</option>
<%else%>
<option>R</option>
<%end if%>
</select>
</TD>
</tr>
<tr>
<td>
Address
</td>
<TD>
<TEXTAREA NAME="address" ROWS="3" COLS="20"><%=RecSet("Address")%></TEXTAREA></TD>
</TR>
<TR>
<TD>City</TD>
<TD><INPUT TYPE="text" NAME="city" value="<%=RecSet("City")%>"></TD>
</TR>
<TR>
<TD>State</TD>
<TD>
<select name="state">
<option selected>MO</option>
<option>NY</option>
<option>LV</option>
</select>
</TD>
</TR>
<TR>
<TD>Zip</TD>
<TD><INPUT TYPE="text" NAME="zip" value="<%=RecSet("Zip")%>" ></TD>
</TR>
<TR>
<TD>Phone</TD>
<TD><INPUT TYPE="text" NAME="phone" value="<%=RecSet("Phone")%>" ></TD>
</TR>
<TR>
<TD>Area_Code</TD>
<TD><INPUT TYPE="text" NAME="areacode" value="<%=RecSet("Area_Code")%>" ></TD>
</TR>
<TR>
<TD>URL</TD>
<TD><INPUT TYPE="text" NAME="url" value="<%=RecSet("URL")%>" ></TD>
</TR>
<TR>
<TD>Name</TD>
<TD><INPUT TYPE="text" NAME="name" value="<%=RecSet("Name")%>" ></TD>
<%RecSet.Close
Databas.Close %>
</TR>
<TR>
<TD>
<p>
<INPUT TYPE="submit" value="Edit">
</TD>
</TR>
</TABLE>
</FORM>
</HTML>
</BODY>
LarsGMedlem sedan dec. 200012 464 inlägg Att du får problem med & har inte med SQL att göra utan beror på att du skickar värdet med GET (request.querystring) där & har en viss betydelse. Om du använde POST (request.form) så blir det lugnt. Det går väl att ordna med någon HTML/URL encoding men POST är bättre.
Hej!
Upptäckte det just, det står crsedit.asp?name=A1%20Towing%20&%20Recovery i querystringen....
dvs & förvanskas
Ska byta till request.form....återkommer
Oki, nu fungerar det, gjorde det utan querystring.
Sorry @nders att jag inte såg från början i url:en att & tecknet förvanskades....
Skickar:
<FORM METHOD="POST" ACTION="crsedit.asp">
<input type=hidden name="name" value="<%=RecSet("Name")%>">
<input type=hidden name="city" value="<%=RecSet("city")%>">
<input type="hidden" name="phone" value="<%=RecSet("phone")%>">
<input type="image" src="edit.gif" WIDTH="18" HEIGHT="14" BORDER=0 ALT="Edit">
</FORM>
Tar emot:
name = Replace(Request.form("name"), "'", "''")
city = Request.form("city")
phone = Request.form("phone")
Tack för all hjälp!!!
@ndersMedlem sedan juni 200032 969 inlägg Se till att escape:a apostrof i alla värden som ska in i SQL-frågor, och inte bara name-fältet. Det bästa är om du gör en liten funktion, så blir det lättare att kalla på.
Function FixString(strText)
strText = Replace(strText, "'", "''")
FixString = strText
End Function
name = FixString(Request.form("name"))
city = FixString(Request.form("city"))
phone = FixString(Request.form("phone"))
Mvh,