来自MySQL的ASP查询的奇怪响应

来自MySQL的ASP查询的奇怪响应,mysql,asp-classic,Mysql,Asp Classic,我正在使用ASP显示MySQL的结果。与使用Oracle的方式一样,我成功创建了系统DSN: 这是我的asp代码 <% '---------------------------------------------- ' test connection '---------------------------------------------- Response.Charset="utf-8" on error resume next response.write "Test for

我正在使用ASP显示MySQL的结果。与使用Oracle的方式一样,我成功创建了系统DSN:

这是我的asp代码

<%
'----------------------------------------------
' test connection 
'----------------------------------------------
Response.Charset="utf-8"
on error resume next
response.write "Test for connection to mysql" & vbcrlf
strConnect="driver={mysql odbc 5.1 driver};dsn=MYSQL;uid=your user name;password=your pass word;"
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConnect

strSQL = "select name,address from teacher where id=4"
set rs = objConn.execute(strSQL)

if not rs.eof then
  response.write "Find some records!" & vbcrlf
  response.write "the data is :" & rs("name") & vbcrlf
  response.write "Yes!" & vbcrlf
else 
  response.write "Opps, No record found!" & vbcrlf
end if 
on error goto 0
%>
这将是一个无止境的循环。看起来rs不是空的,而是我们看不到的东西

更新: 我在mysql中查看了日志,发现更新页面后,sql查询只有以下几条:


完全没有找到我的strSQL,为什么

我不认为您实际上是在
rs
中创建记录集。尝试用以下内容替换set语句:

set rs = Server.CreateObject("ADODB.recordset")
rs.Open sqlStr, objConn
strConnect="driver={mysql odbc 5.1 driver};SERVER=your server's address;DATABASE=test_db;user=your username;password=yourpassword;"
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConnect
strSQL = "select name,address from teacher where id=4"
set rs = objConn.execute(strSQL)

好的,下面是我解决这个奇怪问题的方法:

  • 在ODBC管理器中删除系统DSN
  • 按如下方式修改键代码:

    set rs = Server.CreateObject("ADODB.recordset")
    rs.Open sqlStr, objConn
    
    strConnect="driver={mysql odbc 5.1 driver};SERVER=your server's address;DATABASE=test_db;user=your username;password=yourpassword;"
    set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open strConnect
    strSQL = "select name,address from teacher where id=4"
    set rs = objConn.execute(strSQL)
    
  • 看看我问题中的更新,用这些代码我发现mysql中的日志很奇怪,所以,一定是strSQL没有正确编写。
    我不知道为什么,但它起作用了

    请将代码作为文本而不是屏幕截图。很难将屏幕截图中的代码复制并粘贴到编辑器中/IDE@JonP你已经做到了!您应该尝试在下一步恢复时删除
    。我打赌你会看到SQL中有一个错误,因此没有rs,这就是写操作失败的原因。@bitfiddler我没有更改任何其他代码,只是更改了答案中的关键代码,并在ODBC管理器中删除了系统DSN,然后它就工作了。我不知道为什么,但非常感谢!卡卡,从你的图片和帖子中删除你的用户名和密码是个好主意。谢谢回复!我像你说的那样修改了我的代码,没有任何改变。teacher.id的数据类型是什么?如果它不是数字,那么select会抛出一个错误,因为它没有被引用。非常感谢,我已经解决了它!看看我的答案。真奇怪!是的,正如我在上面和我的评论中所说的,接下来的简历是为了防止你看到错误。除非测试错误,否则应该避免这种情况。很高兴你解决了这个问题。那么,什么时候使用
    继续下一个
    ?我用oracle编写了很多asp代码,并且总是使用这个
    继续下一步
    ,在我昨天想从MySQL查询之前,没有发生过任何问题,@bitfidler