Katalog ASP odkaz∙: Hledßte informace o ASP? Zkuste nßÜ nov² katalog odkaz∙ na ASP weby. Vφce zde...
TextLink.cz
VyÜlo: 13.12.2000 Rubrika: ASP - Security

AEX: Zapome≥te na problΘmy s apostrofy p°i vklßdßnφ dat do databßze!
Hlßsφ Vßm VaÜe scripty chybu p°i vklßdßnφ znaku apostrof(')? Zkuste pou₧φt funkci AEX, kterß tento problΘm elegantn∞ °eÜφ. Vφce v Φlßnku...

Pou₧φvßte-li SQL p°φkaz INSERT, jist∞ jste se setkali s problΘmem apostrofu resp. znaku " ' ", kter² zp∙sobuje neoΦekßvanou chybu.

KonkrΘtn∞ se jednß o nßsledujφcφ chybovou hlßÜku:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '...'

AEX funkce Vßm ulehΦφ ₧ivot p°i zpracovßvßnφ formulß°ov²ch dat, kterΘ mohou obsahovat inkriminovan² znak apostrof. Jestli₧e nep°evedete jeden apostrof na dva, data se do databßze neulo₧φ.

Funkce AEX

<%
Function AEX(strRetezec)

If strRetezec <> "" Then
      If InStr(strRetezec,"'") <> 0 Then
          AEX = Replace(strRetezec,"'","''")
       Else
          AEX = strRetezec
      End If
   End If

End Function
%>

Syntaxe AEX funkce je jednoduchß:

AEX(string)

VÜe jist∞ pochopφte na nßsledujφcφm p°φkladu:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=Contact"
strSQL = "INSERT INTO tblName (fldFirstName,fldLastName) VALUES ('" & _
AEX(Request.Form("FirstName")) & "','" & _
AEX(Request.Form("LastName")) & "')"
Conn.Execute(strSQL)
%>

Kde a proΦ funkci vyu₧φt?

D∙vod vyu₧itφ je jasn². P°i vklßdßnφ °et∞zce(stringu) do tabulky(Access) °et∞zec nesmφ obsahovat apostrof. Jestli₧e nutn∞ pot°ebujete onen znak vlo₧it, staΦφ pou₧φt tzv. escape sekvenci, kterß je v tomto p°φpad∞ ''.

AEX je u₧iteΦnß nap°φklad p°i vklßdßnφ tohoto Φlßnku. VeÜkerΘ apostrofy, kterΘ jsem zde pou₧il mi p°evede na dva a tφm odpadß spousta problΘm∙.

Zden∞k Cendra
ceskywap@ceskywap.cz



   Souvisejφcφ Φlßnky
TextLink.cz