在我重新安装网站的服务器后,我遇到了一个问题。
过去我可以这样做:
代码:
<%
set msgSet = conn.execute("select * from base_scroller where scroller_num = 1"
%>
检查它是否为空或其他任何东西
代码:
<% if msgSet("scroller_name") <> "" then %>
如果它是我可以做任何事情(比如显示它的价值)
代码:
<%= msgSet("scroller_name") %>
<% end if %>
现在我不能这样做,“if”测试不适用于“msgSet(”scroller_name“)”并且我必须先在另一个变量中重新设置它
代码:
<% scrollername = msgSet("scroller_name") %>
那时我才能对它进行测试...
代码:
<% if scrollername <> "" then %>
并展示它。
<%= scrollername %>
<% end if %>
我只想找回对b4等mysql记录集变量进行操作的选项。
有人遇到过这个问题吗?改变了什么,是一个虚假的mysql varsion还是什么?
谢谢你们。
答案 0 :(得分:1)
要确保在字段中有值,您应该做两件事:
我并没有对影响代码的驱动程序进行任何更改,但我认为不同之处在于您的字符串实际上返回一个空字符串(等于“”)并且您的记录集返回了正确的NULL值(这不等于“”)
答案 1 :(得分:0)
之前从未见过这个问题,我也不确定为什么(有关错误的更多信息会有所帮助) - 但是,作为一个相对快速的修复,您可能希望在使用它时强制转换该项目。像:
<%= cStr(msgSet("scroller_name")) %>
有关详细信息,请参阅http://www.w3schools.com/vbscript/vbscript_ref_functions.asp#conversion。
有关错误的详细信息可帮助您获得更好的答案。没有MyODBC 5.1,您使用的是哪个版本的MyODBC驱动程序?通过“我的odbc是:mysql 5.1驱动程序”你的意思是MySQL 5.1的驱动程序 - 应该是MyODBC版本3.51。
另外,“在我重新安装我的网站的服务器之后”你的意思是你干净安装了服务器操作系统吗?或者你刚刚重新安装MySQL?或者是其他东西? MySQL 5.1刚刚于12月8日问世 - 这是升级的一部分吗?
最后,请阅读您的问题和部分回复中的一些评论。在所有条件相同的情况下,如果需要进行一些说明,请编辑问题以添加详细信息。不要写回复。这不是一个论坛,你的回应将失去其背景,只要在它上面投票。如果它全部在一个位置,而不是在问题和作为回复的各种附录之间滚动,那么它更容易处理整个问题。
答案 2 :(得分:0)
更多详情:
我的odbc是:mysql 5.1驱动程序。
我的mysql版本:mysql server 5.0
我的连接字符串是:
我试图删除STMT = SET CHARACTER SET希伯来语; OPTION = 3;部分 - 没有变化...
问题是使用db中的任何变量,它可以是任何类型的变量(text,date,int)......
甚至
天(msgSet(“scroller_date”))现在不起作用......
而且很有趣这是......它以前都工作得很好.. b4安装
你看到一些与众不同的东西吗?也许是一个不同的mysql / ODBC版本?答案 3 :(得分:0)
好的...
新的odbc是5.1:位于mysql.com服务器上(链接:http://dev.mysql.com/downloads/connector/odbc/5.1.html)
是。我已经在我的网络服务器上重新安装了操作系统(Windows Server 2003),并在其上安装了mysql服务器5.0。
我没有收到错误,当我使用我正在解释的方法时,它只是没有返回任何数据,我必须像我解释的那样使用额外的变量。
您还需要更多细节吗?
答案 4 :(得分:0)
这可能是一种更好的方法来测试,以另一种方式检查记录集是否为空。
我通常使用:
On Error Goto 0
set msgSet = conn.execute("select * from base_scroller where scroller_num = 1"
If msgSet.EOF = True And msgSet.BOF = True Then
Response.Write "Recordset cursor was at the beginning and end of file - empty set."
Response.End
End If
这可能有助于调试它。
哦,这可能很重要。我不记得是什么导致它,但有时我发现当通过记录集引用MySQL字段时,无论数据库定义或查询中的字段是什么,它总是小写的。
如果这不会导致脚本失败,可能会尝试找出记录集返回的内容。
Dim i
For Each i In msgSet.Fields
Response.Write i & "=[" & msgSet.Fields(i) & "]<br />"
Next
祝你好运
答案 5 :(得分:0)
我遇到了同样的问题...... 只是从mysql 4&amp;迁移asp站点odbc 3.x(旧版本......)到mysql 5.1和odbc 5.1。 如果我尝试这个简单的代码:
set rs = conn.execute(“select ....”)
而不是rs.eof
response.write“t1:”&amp; rs(“text”)&amp; “
t2:”&amp; rs(“text”)&amp; “
”
rs.movenext
WEND
作为输出我得到以下内容: t1:你好 t2: t1:你好吗? t2: 等...
我第二次访问该字段时没有任何值,唯一的方法是使用temp变量第一次存储数据...