asp mysql变量测试问题

时间:2008-12-24 00:19:50

标签: mysql asp-classic

在我重新安装网站的服务器后,我遇到了一个问题。

过去我可以这样做:

代码:

<% 
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还是什么?

谢谢你们。

6 个答案:

答案 0 :(得分:1)

要确保在字段中有值,您应该做两件事:

  1. 确保记录集不为空。
  2. 确保当前字段中没有NULL值。
  3. 我并没有对影响代码的驱动程序进行任何更改,但我认为不同之处在于您的字符串实际上返回一个空字符串(等于“”)并且您的记录集返回了正确的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)

好的...

  1. 新的odbc是5.1:位于mysql.com服务器上(链接:http://dev.mysql.com/downloads/connector/odbc/5.1.html

  2. 是。我已经在我的网络服务器上重新安装了操作系统(Windows Server 2003),并在其上安装了mysql服务器5.0。

  3. 我没有收到错误,当我使用我正在解释的方法时,它只是没有返回任何数据,我必须像我解释的那样使用额外的变量。

  4. 您还需要更多细节吗?

答案 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变量第一次存储数据...