我在asp页面上写了一个变量:
name="ända"
response.write name
它在页面上显示ända
,很好!
将数据库插入数据库时,写入数据库的值为ända
该页面使用<%Response.charset="iso-8859-1"%>
如何将此值ända
写入数据库?
<%Response.charset="iso-8859-1"%>
folderName=request.querystring("foretagsnamn")
folderName = replace(folderName, "å" , "a")
folderName = replace(folderName, "ä" , "a")
folderName = replace(folderName, "ö" , "o")
folderName = replace(folderName, "Å" , "a")
folderName = replace(folderName, "Ä" , "a")
folderName = replace(folderName, "Ö" , "o")
folderName = LCase(folderName)
response.write folderName
然后只是一个sql插入数据库。
sql="INSERT INTO users(folderName) VALUES('"&folderName&"');"
conn.execute(sql)
它是一个mySql数据库,经典的asp。
查询字符串来自信用卡支付服务,奇怪的是,当我执行事务并且我重新使用查询字符串时,它是错误的,但是如果我然后只是更新页面以便它再次运行代码和查询字符串,这是对的!?
答案 0 :(得分:2)
网址参数是网址编码的,您需要解码网址参数值才能获得原始值。
例如,请参阅此implementation of URLDecode
对于&amp;#228; nda,这是HTML编码的,您可以在同一地址找到HTML解码功能。
不确定为什么你会得到一个HTML编码的字符串作为querystring()的结果。
答案 1 :(得分:1)
啊 - 使用绑定参数而不是仅仅将SQL语句连接在一起。这解决了许多问题(性能,SQL注入攻击等)
编辑:我有一段时间没有玩过MySQL,但想法是:
command = new Command("INSERT INTO USERS(folderName) VALUES (@folderName)");
command.Parameters.Add(new MySqlParameter("@folderName", DbType.NVarChar, 255, folderName));
command.ExecuteNonQuery();
此外,folderName必须是unicode列(NCHAR或NVARCHAR)。
答案 2 :(得分:0)
它似乎是通过querystring传递为错误的值。价值来自哪里?这似乎是问题产生的地方。