ASP记录的Fileds是在第二利用空(ASP recordset fileds are empty

2019-10-20 00:59发布

没有人知道为什么这个说法

Response.write(rs.Fields.Item("password")&" ; "&rs.Fields.Item("password"))

做这个 :

myPass ; 

这是非常奇怪的,我在寻找,因为今天上午的解决方案。 它让我疯了,因为这样做的结果是,这codntion:

if rs("password") = rs("password") then

是假的!

编辑:

其他测试之后,我做了一个其他发现:

Response.write(rs.Fields.Item("name")&" ; "&rs.Fields.Item("name"))

这样做:

amdin ; admin

如果我被他的序号索引更改“密码”,它做同样显示:

myPass ; 

编辑:相关的代码:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=crm_sandbox; UID=root;PASSWORD=tahina; OPTION=3" 

if Request.Form("login") <> "" or Request.Form("mdp") <> "" or Request.Form("redirect") <> "" then
    Response.write(Request.Form("mdp")&" ; "&Request.Form("login")&" ; "&Request.Form("redirect")&"<br>")
    if Request.Form("login") = "" then
        rapport = "<p style='color: red; font-weight: bold;'>Erreur : Veuillez remplir votre nom d'utilisateur.</p>"
    elseif Request.Form("mdp") = "" then
        rapport = "<p style='color: red; font-weight: bold;'>Erreur : Veuillez remplir votre mot de passe.</p>"
    elseif Request.Form("login") <> "" and Request.Form("mdp") <> "" then
        sql = "SELECT id, mdp, nom, initiales, couleur, droit FROM connection WHERE nom='"&Request.Form("login")&"';"
        Set rs = Server.CreateObject("ADODB.Recordset")
        rs.open sql, conn

        if rs.eof then
            rapport = "<p style='color: red; font-weight: bold;'>Erreur : Nom d'utilisateur inconnu.</p>"
        elseif rs("mdp") <> Request.Form("mdp") then
            rapport = "<p style='color: red; font-weight: bold;'>Erreur : Mot de passe incorect.</p>"
        elseif Request.Form("mdp") = rs("mdp") then
            Session("util_id") = rs("id")
            Session("util_nom") = rs("nom")
            Session("util_couleur") = rs("couleur")
            Session("util_initiales") = rs("initiales")
            Session("util_droit") = rs("droit")
            Session.Timeout = 660 'On créer une session de 11 heures
            rapport = "<p style='color: green; font-weight: bold;'>Vous êtes à présent connecté !</p>"

            if Request.Form("redirect") <> "" then
                rapport = rapport&"<p>Vous allez être rédirigé vers votre page dans 3 secondes</p>"
            end if
        end if
    end if
end if

Answer 1:

其实我已经收到了这个问题,当网页制作这是第一次运行,记录(值)的第一个值返回一个值,但在记录(值)的二读它返回null。 或excactly什么是对您当前的意外事件发生。

这实际上不是一个非常著名的问题,但仍有一些支持论坛和问题沿着相同的路线回答。

实施例第1页
实施例第2页

有acouple 理论 ,可能导致这一点,比如,没有在表列中的数据类型说明符正确的数据类型。 在记录对象,只有返回值一次,从而毛刺,必须存储在一个对象来代替。

因为它是返回相同的变量的第二呼叫Null

'  [Good Read-out] - object empties itself
if rs( "password")_
= rs("password") then
' [Bad Read-out] - object no longer contains values. 

这不是一个毯子声明中出现,这是一个异常,一个小故障,一些不具备扎实的来由是最小的患病率超出了机器的鬼。

为了解决这个问题:

只有读出从当前记录一次的变量。 这不会允许对象空的,因此,你可以稍后在代码中没有任何大惊小怪比较支票。

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=crm_sandbox; UID=root;PASSWORD=tahina; OPTION=3" 

if Request.Form("login") <> "" or Request.Form("mdp") <> "" or Request.Form("redirect") <> "" then
    Response.write(Request.Form("mdp")&" ; "&Request.Form("login")&" ; "&Request.Form("redirect")&"<br>")
    if Request.Form("login") = "" then
        rapport = "<p style='color: red; font-weight: bold;'>Erreur : Veuillez remplir votre nom d'utilisateur.</p>"
    elseif Request.Form("mdp") = "" then
        rapport = "<p style='color: red; font-weight: bold;'>Erreur : Veuillez remplir votre mot de passe.</p>"
    elseif Request.Form("login") <> "" and Request.Form("mdp") <> "" then
        sql = "SELECT id, mdp, nom, initiales, couleur, droit FROM connection WHERE nom='"&Request.Form("login")&"';"
        Set rs = Server.CreateObject("ADODB.Recordset")
        rs.open sql, conn



        '------------------------------------------------
        'Place record set values in variables first. 
        Dim rMDP, rID, rNom, rCouleur, rInit, rDroit
        rMDP = rs("mdp")
        rID = rs("id")
        rNom = rs("nom")
        rCouleur = rs("couleur")
        rInit = rs("initiales")
        rDroit = rs("droit")
         '------------------------------------------------



        if rs.eof then
            rapport = "<p style='color: red; font-weight: bold;'>Erreur : Nom d'utilisateur inconnu.</p>"
        elseif rMDP <> Request.Form("mdp") then
            rapport = "<p style='color: red; font-weight: bold;'>Erreur : Mot de passe incorect.</p>"
        elseif Request.Form("mdp") = rMDP then
            Session("util_id") = rID
            Session("util_nom") = rNom
            Session("util_couleur") = rCouleur
            Session("util_initiales") = rInit
            Session("util_droit") = rDroit
            Session.Timeout = 660 'On créer une session de 11 heures
            rapport = "<p style='color: green; font-weight: bold;'>Vous êtes à présent connecté !</p>"

            if Request.Form("redirect") <> "" then
                rapport = rapport&"<p>Vous allez être rédirigé vers votre page dans 3 secondes</p>"
            end if
        end if
    end if
end if


Answer 2:

始终检索记录值,并将其放置在变量,然后操纵他们。 我学到了一些奇怪的问题,在第一天,我在15年前开始使用传统的ASP RS值。



文章来源: ASP recordset fileds are empty at second utilisation