Corona 运行时错误"尝试连接字段'?' (一个空值)"

我在我的移动应用程序移交项目中有这个8个问题的调查。首先, Corona 没有提示我任何错误消息,应用程序运行得很好,但是当我添加了两个问题时,我开始收到此消息错误

[![enter image description here](https://i.stack.imgur.com/CIG2X.png)](https://i.stack.imgur.com/CIG2X.png)

我不确定错误为什么是"一个空值",但我的代码看起来像这样。(第662到678行)

        function checkEBASComplete()
        local tempScore = 0
        for i = 1, 10 do
            print("EBAS:"..ebasRating_Arr[i])
            tempScore = tempScore + ebasRating_Arr[i]

            if (ebasRating_Arr[i] == -1) then
                ebasScore = 0
                ebasScore_text.text = "测试未完成"
            else
                ebasScore = tempScore
                ebasScore_text.text = tostring(ebasScore)
            end

        end

        tempScore = 0
    end

    checkEBASComplete()

我在第110行有这样的代码。我只是在后面添加了两个"-1"

local ebasRating_Arr = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}

有人能帮我吗?感谢所有帮助:D

新问题------------------------------------------------------

[![enter image description here](https://i.stack.imgur.com/4MVux.png)](https://i.stack.imgur.com/4MVux.png)

这是我的代码从第705行到711行

function saveResults()

        local q = [[UPDATE EBAS_DEP SET rating1=']]..ebasRating_Arr[1] .. [[',rating2=']] .. ebasRating_Arr[2] .. [[',rating3=']] .. ebasRating_Arr[3] .. [[',rating4=']] .. ebasRating_Arr[4] .. [[',rating5=']] .. ebasRating_Arr[5] .. [[',rating6=']] .. ebasRating_Arr[6] .. [[',rating7=']] .. ebasRating_Arr[7] .. [[',rating8=']] .. ebasRating_Arr[8] .. [[',rating9=']] .. ebasRating_Arr[9] .. [[',rating10=']] .. ebasRating_Arr[10] .. [[',rating11=']] .. amtRating_Arr[1] .. [[',rating12=']] .. amtRating_Arr[2] .. [[',rating13=']] .. amtRating_Arr[3] .. [[',rating14=']] .. amtRating_Arr[4] .. [[',rating15=']] .. amtRating_Arr[5] .. [[',rating16=']] .. amtRating_Arr[6] .. [[',rating17=']] .. amtRating_Arr[7] .. [[',rating18=']] .. amtRating_Arr[8] .. [[',rating19=']] .. amtRating_Arr[9] .. [[',rating20=']] .. amtRating_Arr[10] .. [[',rating21=']] .. amtRating_Arr[11] .. [[',ebas_score=']] .. ebasScore ..[[',amt_score=']] .. amtScore ..  [['WHERE id=']].. _G.EBAS_ID..[[';]]
        db:exec( q )
        print(db:errcode(), db:errmsg())

    end
点赞
用户7454177
用户7454177

ebasRating_ArrcheckEBASComplete函数中的for循环过短时,就会出现错误。原始表格只有8个条目,但是for循环会检查10个表格条目。这就意味着当你试图访问第9个条目时,因为它不存在而导致错误的发生。

我建议将固定的for循环从1到10改为相对的for循环1到数组末尾,这将与#数组(或Lua中的表格)运算符配合使用。您的代码将如下所示:

function checkEBASComplete()
    local tempScore = 0
    for i = 1, #ebasRating_Arr do       -- 被更改为相对for循环
        print("EBAS:"..ebasRating_Arr[i])
        tempScore = tempScore + ebasRating_Arr[i]
        if (ebasRating_Arr[i] == -1) then
            ebasScore = 0
            ebasScore_text.text = "Test Incomplete"
        else
            ebasScore = tempScore
            ebasScore_text.text = tostring(ebasScore)
        end
    end
    tempScore = 0
end
2018-01-04 11:01:33