ADO 到 MySQL:CursorType 和 LockType

ADO to MySQL: CursorType and LockType

我正在尝试将 ASP-ADO 代码转换为 PHP-MySQL 代码,接下来要转换的代码块如下:

Function FindBankName(bankNo)

    If IsNull(bankNo) Or IsNumeric(bankNo) = False Then Exit Function
    Dim recordSet

    Set recordSet = Server.CreateObject("Adodb.Recordset")
    recordSet.Open "SELECT Id, MainPos FROM bank WHERE MainPos = "& bankNo &"", db, 1, 3
    If Not recordSet.EOF Then
        FindBankName = recordSet("Id")
    End If
    recordSet.Close
    Set recordSet = Nothing

End Function

Open 函数的最后两个参数 1 和 3 在 Microsoft 文档中定义为:

CursorType

Optional. A CursorTypeEnum value that determines the type of cursor that the provider should use when opening the Recordset. The default value is adOpenForwardOnly.

LockType

Optional. A LockTypeEnum value that determines what type of locking (concurrency) the provider should use when opening the Recordset. The default value is adLockReadOnly.

MySQLi 中是否有相应的选项涵盖它们?我应该如何进行?我可以忽略它们吗?

CursorType 1 是adOpenKeyset,这意味着允许在记录集中进行所有类型的移动,您可以看到更改但看不到其他用户添加的内容。换句话说,对于代码仅获取第一条记录的 ID 的记录集,这有点矫枉过正。 LockType 3 是 adLockOptimistic,这意味着记录仅在更新时被锁定。同样,对于您根本不进行任何更新的记录集,它超出了您的需要。

然而,综上所述,我们都倾向于适应适用于大多数目的的游标和锁类型(或者,更有可能的是,我们转向 rs.Open 以外的其他方法),并且对于这样的查询从一行返回两列,你用什么真的没有区别。

底线是,只要您可以设置 MySQL 查询以允许您执行所需的操作——读取、更新、添加、删除——,您就可以安全地忽略特定参数由 ADO 使用。