不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
表单和字段同名简化ASP语句
编辑:dnawo 日期:2007-02-10
一、常规
在客户和服务器交互过程中,很多时候我们都是用表单进行提交信息再保存到数据库中,碰到表单多的时候,在书写SQL语句时一不小心就会出错。下图是一个房产网站上的表单:

加上很多人都告诫我们:尽量不要将表单的名称和数据库字段名相同,以致我们只能不厌其烦加上万分小心的构造SQL语句:
或
如果有几十上百个表单的话,汗。再也不能忍受这种烦琐的工作了,我们应该让工作变得简单一些!那么就看下边我们是怎么做的吧。
二、简化
第一步:将表单名和字段名一致(不一致但有规律也可以,比如名为tel的表单与tel_1字段对应)。
第二步:有了第一步的前提条件后我们就可以用request.form集合进行简化ASP语句了:
三、后记
1.只要不轻易暴露出数据库地址,注意下用户表字段的取名,其他表的字段名给人知道了又何妨?
2.需要注意的是得过滤掉确定、重置等按钮的值,要不更新时request.form会取到其值导致出错,这边有个小技巧,将这边按钮的name属性去掉就不需过滤可以直接用了。
3.正确设置字段类型,特别是数值型字符。
4.以上简化代码仅供参考,不能直接使用。
在客户和服务器交互过程中,很多时候我们都是用表单进行提交信息再保存到数据库中,碰到表单多的时候,在书写SQL语句时一不小心就会出错。下图是一个房产网站上的表单:

加上很多人都告诫我们:尽量不要将表单的名称和数据库字段名相同,以致我们只能不厌其烦加上万分小心的构造SQL语句:
复制内容到剪贴板
程序代码

sql = "insert into table1(username,password,tel,phone,address,post,email,...) values('"&request.form("username")&"','"&request.form("password")&"','"&request.form("tel")&"','"&request.form("phone")&"','"&request.form("address")&"','"&request.form("post")&"','"&request.form("email")&"',..."&")"
或
复制内容到剪贴板
程序代码

rs.addnew
rs("username") = request.form("username")
rs("password") = request.form("password")
rs("tel") = request.form("tel")
rs("phone") = request.form("phone")
rs("address") = request.form("address")
rs("post") = request.form("post")
rs("email") = request.form("email")
...
rs.update
rs("username") = request.form("username")
rs("password") = request.form("password")
rs("tel") = request.form("tel")
rs("phone") = request.form("phone")
rs("address") = request.form("address")
rs("post") = request.form("post")
rs("email") = request.form("email")
...
rs.update
如果有几十上百个表单的话,汗。再也不能忍受这种烦琐的工作了,我们应该让工作变得简单一些!那么就看下边我们是怎么做的吧。
二、简化
第一步:将表单名和字段名一致(不一致但有规律也可以,比如名为tel的表单与tel_1字段对应)。
第二步:有了第一步的前提条件后我们就可以用request.form集合进行简化ASP语句了:
复制内容到剪贴板
程序代码

'添加
Sub InsertSQl()
inssql="insert into "&TableName&" ("
for each item in request.form
inssql=inssql&item&","
next
inssql=left(inssql,len(inssql)-1)&")"&" values("
for each item in request.form
if isnumeric(request.form(item)) then
inssql=inssql&""&Sqlstr(request.form(item))&""&","
else
inssql=inssql&"'"&Sqlstr(request.form(item))&"'"&","
end if
next
inssql=left(inssql,len(inssql)-1)&")"
Conn.execute(inssql)
End Sub
'修改
Sub ModifySql()
modsql="update "&TableName&" set "
for each item in request.form
if isnumeric(request.form(item)) then
modsql=modsql&item&"="&Sqlstr(request.form(item))&","
else
if request.form(item)="" then con=" ":else:con=request.form(item)
modsql=modsql&item&"='"&Sqlstr(con)&"',"
end if
next
modsql=left(modsql,len(modsql)-1)&" where ID="&request("ID")
Conn.execute(modsql)
End Sub
'删除
Sub DeleteSql()
for each item in request.form("id")
delsql="delete from "&TableName&" where id="&item
Conn.execute(delsql)
next
End Sub
Sub InsertSQl()
inssql="insert into "&TableName&" ("
for each item in request.form
inssql=inssql&item&","
next
inssql=left(inssql,len(inssql)-1)&")"&" values("
for each item in request.form
if isnumeric(request.form(item)) then
inssql=inssql&""&Sqlstr(request.form(item))&""&","
else
inssql=inssql&"'"&Sqlstr(request.form(item))&"'"&","
end if
next
inssql=left(inssql,len(inssql)-1)&")"
Conn.execute(inssql)
End Sub
'修改
Sub ModifySql()
modsql="update "&TableName&" set "
for each item in request.form
if isnumeric(request.form(item)) then
modsql=modsql&item&"="&Sqlstr(request.form(item))&","
else
if request.form(item)="" then con=" ":else:con=request.form(item)
modsql=modsql&item&"='"&Sqlstr(con)&"',"
end if
next
modsql=left(modsql,len(modsql)-1)&" where ID="&request("ID")
Conn.execute(modsql)
End Sub
'删除
Sub DeleteSql()
for each item in request.form("id")
delsql="delete from "&TableName&" where id="&item
Conn.execute(delsql)
next
End Sub
三、后记
1.只要不轻易暴露出数据库地址,注意下用户表字段的取名,其他表的字段名给人知道了又何妨?
2.需要注意的是得过滤掉确定、重置等按钮的值,要不更新时request.form会取到其值导致出错,这边有个小技巧,将这边按钮的name属性去掉就不需过滤可以直接用了。
3.正确设置字段类型,特别是数值型字符。
4.以上简化代码仅供参考,不能直接使用。
评论: 0 | 引用: 0 | 查看次数: 5049
发表评论
请登录后再发表评论!