看看我的SQL怎么错了?

Catsilly 2002-08-13 05:49:50
开始用COOKIE统计了访问次数. 数据库Visitors 包括 IPAdress 和 VisitTimes

VisitIP = Request.ServerVariables("remote_addr")

if num="" Then
VisitTimes = 1

省略程序

else
VisitTimes = num + 1
SQLstmt2 = "UPDATE Visitors SET VisitTimes = '"& VisitTimes &"' WHERE IPAdress = '"& VisitIP &"'"
End if

Set RS2 = conn.execute(SQLstmt2)

出错提示是我的 参数太少. UPDATE语句怎么错了?

...全文
33 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Catsilly 2002-08-14
  • 打赏
  • 举报
回复
response.write 是成功的. 写出来是 UPDATE Visitors SET VisitTimes = '13' WHERE IPAdress = '143.167.22.50' 包括UPDATE都写出来了. 但SQL根本就没执行呀.执行的是NUM+1 . 不知道怎么判断.

trim()也不行, 老大!

如果用INSERT做就可以.
但是 数据库里 会有 重复IP, 比如
VisitTimes = '13' IPAdress = '143.167.22.50'
VisitTimes = '15' IPAdress = '143.167.22.50'
为什么INSERT就对, UPDATE就不对? 是不是INSERT用的是几个SQLstmt,
UPDATE只有一个句子, 不能用SQLstmt? 这样parameter
就少了?


cmsoft 2002-08-14
  • 打赏
  • 举报
回复
if trim(num)="" Then '加trim()
VisitTimes = 1

SQLstmt2 = "INSERT INTO Visitors(IPAddress, VisitTimes)"
SQLstmt2 = SQLstmt2 & " VALUES ("
SQLstmt2 = SQLstmt2 & "'" & VisitIP & "',"
SQLstmt2 = SQLstmt2 & "'" & VisitTimes & "'"
SQLstmt2 = SQLstmt2 & ")"

else

VisitTimes = num + 1

SQLstmt2 = "UPDATE Visitors SET VisitTimes = '"& VisitTimes &"' WHERE IPAdress = '"& VisitIP &"'"



end if
Set RS2 = conn.execute(SQLstmt2) '把它拿出判断外
free_bedlamite 2002-08-14
  • 打赏
  • 举报
回复
建议调试方法:

在 Set RS2 = conn.execute(SQLstmt2) 前写

response.write SQLstmt2
response.end

然后运行,将浏览器打出的sql语句拿到数据库里试一下,看有没有问题。

这样就可以肯定update是否有错了。

Catsilly 2002-08-14
  • 打赏
  • 举报
回复
再加10分!
Catsilly 2002-08-14
  • 打赏
  • 举报
回复
谢谢大家!
我是要把这些值送到(UPDATE)我的数据库里, 而不是显示, 所以不能用response.write 虽然这样能成功显示.
VisitTimes是数字?不要用引号.==> 我其他的程序用了引号, 都是对的.
请大家在看看我的程序吧?

if num="" Then
VisitTimes = 1

SQLstmt2 = "INSERT INTO Visitors(IPAddress, VisitTimes)"
SQLstmt2 = SQLstmt2 & " VALUES ("
SQLstmt2 = SQLstmt2 & "'" & VisitIP & "',"
SQLstmt2 = SQLstmt2 & "'" & VisitTimes & "'"
SQLstmt2 = SQLstmt2 & ")"

else

VisitTimes = num + 1

SQLstmt2 = "UPDATE Visitors SET VisitTimes = '"& VisitTimes &"' WHERE IPAdress = '"& VisitIP &"'"

Set RS2 = conn.execute(SQLstmt2)

end if

如果用INSERT是 对的, 但IP用重复, 所以我用UPDATE.
出错提示是 (RS2那一行)TOO few parameter
到我想肯定指的是 UPDATE的错. 因为别的都没错.




Lostinet 2002-08-14
  • 打赏
  • 举报
回复
VisitTimes是数字?不要用引号.
yhncom_36de 2002-08-14
  • 打赏
  • 举报
回复
看一下下面的参数是否有值:
response.write IPAdress

response.write VisitTimes
yeahspyme 2002-08-13
  • 打赏
  • 举报
回复
你说如果是第一次怎么办呢?因为没有建立新记录,WHERE IPAdress = '"& VisitIP &"'"怎么比较呢。visitIP也是空值。
yunzhongjian 2002-08-13
  • 打赏
  • 举报
回复
update 语句应当是没有错的。但应当注意标点不应当是中文的。可能有时不小心输入时错了。
慢慢试,先在Set RS2 = conn.execute(SQLstmt2)前加//注释掉,看还有没有错误。
im_yh 2002-08-13
  • 打赏
  • 举报
回复
VisitTimes
VisitIP
是否允许为空
检查一下数据类型吧
114 2002-08-13
  • 打赏
  • 举报
回复
VisitTimes
VisitIP

其中有为空的
waifboy 2002-08-13
  • 打赏
  • 举报
回复
不是吧!我好象没有见过这样的错误提示....
楼下的别说我少见哟!俺真的没见过.....
cmsoft 2002-08-13
  • 打赏
  • 举报
回复
SQLstmt2 = "UPDATE Visitors SET VisitTimes = '"& VisitTimes &"' WHERE IPAdress = '"& VisitIP &"'"
response.write sqlstmt2
response.end
看看有没有错?

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧