日期:2014-05-17  浏览次数:21076 次

asp变量组成SQL语句字符串问题
StrSQL = "INSERT INTO [AInfo_GD] (SNo,AName,ANo) VALUES ('"&No&"','"&UPstr&"','"&myGuid&"')"
response.write StrSQL;
显示为:
INSERT INTO [AInfo_GD] (SNo,AName,ANo) VALUES ('5','覆盖',''7191CE37-A000-4D17-ADF3-159872E1ADE4;
显然右边缺了 '),因此执行语句时出错;
而如果,
StrSQL = "INSERT INTO [AInfo_GD] (SNo,AName,ANo) VALUES ('"&No&"','"&UPstr&"','7191CE37-A000-4D17-ADF3-159872E1ADE4')"
则语句可执行,问题就是因为 myGuid等于GUID性质的字符串后,导致出错。
该如何处理变量问题?

------解决方案--------------------
你的strsql写法是正确的
但输出的sql是错误的,需要你检查一下myGuid是什么内容?
------解决方案--------------------
转义sql的',变为''

拼接sql语句一定要注意替换',要不很容易被sql注入
VBScript code
function sql(v)
 sql=replace(v,"'","''")
end function

StrSQL = "INSERT INTO [AInfo_GD] (SNo,AName,ANo) VALUES ('"&sql(No)&"','"&sql(UPstr)&"','"&sql(myGuid)&"')"
response.write StrSQL

------解决方案--------------------
探讨
解决了;
Set objTypeLib = CreateObject("Scriptlet.TypeLib")
myGuid = objTypeLib.Guid
Set objTypeLib = Nothing
myGuid = Replace(Replace(myGuid, "{", ""), "}", "")
此段代码来自网上,现将第四句,字符串处理方式改为
……

------解决方案--------------------
vbs的GUID都是用{}括起的,多'是不是其他内容造成的。一定要替换掉'或者替换为对应的实体'',要不你就等呗注入了
------解决方案--------------------
语句写着,单引号不配对。