ASP 专家 - 需要帮助将此 PHP 代码转换为 ASP

Posted

技术标签:

【中文标题】ASP 专家 - 需要帮助将此 PHP 代码转换为 ASP【英文标题】:ASP Experts - Need help converting this PHP code to ASP 【发布时间】:2009-07-18 03:44:13 【问题描述】:

我在将下面的 php SQL 插入代码转换为 ASP 时遇到了一些问题,我想在 ASP 中使用相同的概念,因为它更灵活,不依赖于 ASP 拥有的关键字。

想知道是否有人可以在这里帮助 ASP 新手。

$table = 'tbluser';
$array = array (
        'name' => $name,
        'email' => $email,
        'ip' => $remoteIP
        );
$newid = insert_query ($table, $array); 



  function insert_query ($table, $array)
  
    global $mysql_errors;
    $query = 'INSERT INTO ' . $table . ' ';
    foreach ($array as $key => $value)
    

      $fieldnamelist .= '' . '`' . $key . '`,';
      if ($value == 'now()')
      
        $fieldvaluelist .= 'now(),';
        continue;
      
      else
      
        $fieldvaluelist .= '\'' . $value . '\',';
        continue;
      
    

    $fieldnamelist = substr ($fieldnamelist, 0, 0 - 1);
    $fieldvaluelist = substr ($fieldvaluelist, 0, 0 - 1);
    $query .= '' . '(' . $fieldnamelist . ') VALUES (' . $fieldvaluelist . ')';
    $result = mysql_query ($query);
    if (!$result)
    
      $message = 'Invalid query: ' . mysql_error () . '<br>';
      $message .= 'Whole query: ' . $query;
    

    $id = mysql_insert_id ();
    return $id;
  

这是经典的 ASP。别无选择,公司仍然需要为特定项目维护它。

我想要在 ASP 中使用这种特定代码样式的主要原因是因为我不想与查询数据库的 ASP 样式绑定(使用 cmd 等...)

通过键(表字段名)和值创建数组集合,然后转换成完整的sql字符串,我只需要运行 .execute(sql) ,这意味着将来我可以更容易地将项目转换为其他框架,无需重写将数据插入/更新到数据库的方式。

【问题讨论】:

ASP Classic 还是 ASP.NET?两者是非常不同的技术,所以我需要知道哪一种才能提供帮助。 【参考方案1】:

不完全相同,但这里有一些我在 ASP 经典网站中使用过的功能。 我认为这应该是一个很好的学习起点。

Function AddUser(Name, Email, IP )
    dim sqlstmt
    sqlstmt = "INSERT INTO tbluser (Name, Email, IP )"
    sqlstmt = sqlstmt & " values (?, ?, ?)"
    call RunSQL( sqlstmt, array( _
        mp("@Name", adVarChar, 100, Name), _
        mp("@Email", adVarChar, 100, Email), _
        mp("@IP", adVarChar, 100, IP)))
end Function

Function RunSQL(strSqlStmt , params())
    On Error resume next

    ''// Create the ADO objects
    Dim cmd
    Set cmd = server.createobject("ADODB.Command")

    ''// Init the ADO objects & the stored proc parameters
    cmd.ActiveConnection = GetConnectionString()
    cmd.CommandText = strSqlStmt
    cmd.CommandType = adCmdText
    collectParams cmd, params

    ''// Execute the query without returning a recordset
    cmd.Execute , , adExecuteNoRecords
    If err.number > 0 then
        BuildErrorMessage()
        exit function
    end if

    ''// Cleanup
    Set cmd.ActiveConnection = Nothing
    Set cmd = Nothing

    Exit Function

End Function


Private Sub collectParams(cmd , argparams())
    Dim params , v
    Dim i , l , u

    params = argparams


    For i = LBound(params) To UBound(params)
        l = LBound(params(i))
        u = UBound(params(i))

        ''// Check for nulls.
        If u - l = 3 Then
            If VarType(params(i)(3)) = vbString Then
                If params(i)(3) = "" then
                                    v = null
                else
                    v = params(i)(3)
                end if
            Else
                v = params(i)(3)
            End If

        If params(i)(1) = adLongVarChar Then
                Dim p ''// As New Parameter
                Set p = cmd.CreateParameter(params(i)(0), params(i)(1), adParamInput)
                p.Attributes = adParamLong + adParamSigned
                If Not IsNull(v) Then
                    p.AppendChunk v
                    p.Size = Len(v)
                Else
                    p.Value = v
                    p.Size = 10000
                End If
                cmd.Parameters.Append p
            Else
                cmd.Parameters.Append cmd.CreateParameter(params(i)(0), params(i)(1), adParamInput, params(i)(2), v)
            End If
        Else
            RaiseError m_modName, "collectParams(...): incorrect # of parameters"
        End If
    Next
End Sub

【讨论】:

【参考方案2】:

我想一个简单的重写对你没有多大帮助,因为你需要建立数据库连接、处理错误等。

我建议您查看ajaxed library,它为您提供db.insert() 方法.. 我相信它与您需要的方法相同。

【讨论】:

以上是关于ASP 专家 - 需要帮助将此 PHP 代码转换为 ASP的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助将此查询转换为 NHibernate 标准

如何将此.XAML代码转换为C#代码

如何将此 cURL 代码转换为 PHP(PayPal API)

PHP:将动态上传的图像转换为特定颜色(动态颜色)

如何将此对象转换为 PHP 中的数组

访问 + mysql 转换为 webplatform = (php + asp.net + mysql)?