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