Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用动态行数更新数据库?_Sql Server_Foreach_Asp Classic - Fatal编程技术网

Sql server 如何使用动态行数更新数据库?

Sql server 如何使用动态行数更新数据库?,sql-server,foreach,asp-classic,Sql Server,Foreach,Asp Classic,我有一个表单,其中要更新的行数未知,有些可能需要插入,有些可能需要在数据库中更新。如果需要,我已经给出了每个输入的名称和ID 以下是表单输出的示例,表单中的每一行有3个输入: plcid_1 = consumed_1 = 850 runtime_1 = 20 plcid_2 = 1 consumed_2 = 500 runtime_2 = 25 plcid_3 = consumed_3 = 100 runtime_3 = 50 plcid_4 = consumed_4 = 485 runt

我有一个表单,其中要更新的行数未知,有些可能需要插入,有些可能需要在数据库中更新。如果需要,我已经给出了每个输入的名称和ID

以下是表单输出的示例,表单中的每一行有3个输入:

plcid_1 =
consumed_1 = 850 
runtime_1 = 20
plcid_2 = 1
consumed_2 = 500
runtime_2 = 25
plcid_3 = 
consumed_3 = 100
runtime_3 = 50
plcid_4 = 
consumed_4 = 485
runtime_4 = 20
plcid_5 = 2
consumed_5 = 400
runtime_5 = 39
我需要做的是遍历每个集合并执行以下操作:

plcid\u n
为空时:

INSERT INTO Table (consumed, runtime) VALUES (850,20)
INSERT INTO Table (consumed, runtime) VALUES (100,50)
INSERT INTO Table (consumed, runtime) VALUES (485,20)
但是当
plcid\u n
有一个值时:

UPDATE Table SET consumed='500', runtime='25' WHERE plcid='1'
UPDATE Table SET consumed='400', runtime='39' WHERE plcid='2'
我对for each函数所做的任何操作都只使用每个单独的表单项而不是集合,因此我无法创建数据库查询。

这应该可以:

dim fld, plcid, consumed, runtime

for each fld in request.form
    if left(fld, 6) = "plcid_" then
        plcid = mid(fld, 7)
        consumed = request.form("consumed_" & plcid)
        runtime = request.form("runtime_" & plcid)
        if request.form(fld) = "" then
            sql = "INSERT INTO TABLE (consumed, runtime) VALUES(" & consumed & "," & runtime & ")"
            ' execute
        else
            sql = "UPDATE TABLE SET consumed = " & consumed & ", runtime = " & runtime & " WHERE plcid = " & plcid
            ' execute
        end if
    end if
next

你的“表单输出”是什么?是字符串列表吗?它是以换行符分隔的单个字符串吗?还有别的吗?有效的解决方案,大拇指朝下是怎么回事?不知道是谁朝下的,这确实是有效的解决方案。非常好,谢谢!有多少次必须让人们知道,直接从表单输入执行SQL是破坏数据的最快方式。这就是为什么如此多的公司现在不得不宣布安全漏洞,因为像这样的劣质方法。至少,传递这些值。这可能奏效,但从长远来看,它充满了问题。