Я пытаюсь преобразовать 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
Последние два параметра, 1 и 3, из Open
Функция определяется в документах Microsoft как:
CursorType
Необязательный. Значение CursorTypeEnum, определяющее тип курсора, который поставщик должен использовать при открытии набора записей. Значением по умолчанию является adOpenForwardOnly.
LockType
Необязательный. Значение LockTypeEnum, определяющее, какой тип блокировки (параллелизма) должен использовать провайдер при открытии набора записей. Значением по умолчанию является adLockReadOnly.
Есть ли в MySQLi соответствующие опции, которые их покрывают? Как мне поступить? Могу ли я их игнорировать?
CursorType 1 — это adOpenKeyset, что означает, что все типы перемещения по набору записей разрешены, и вы можете видеть изменения, но не можете видеть добавления других пользователей. Другими словами, для набора записей, где код просто получает идентификатор первой записи, это немного излишне. LockType 3 является adLockOptimistic, что означает, что записи блокируются только при обновлении. Опять же, для набора записей, где вы вообще не обновляете, это больше, чем вам нужно.
Однако все это говорит о том, что мы все склонны использовать типы курсора и блокировки, которые работают для большинства целей (или, что более вероятно, мы переходим к другим методам, чем rs.Open
), и для запроса, возвращающего два столбца из одной строки, не имеет значения, что вы используете.
Суть в том, что до тех пор, пока вы можете настроить свои запросы MySQL, чтобы позволить вам выполнять необходимые действия — чтение, обновление, добавление, удаление — вы можете спокойно игнорировать конкретные параметры, используемые ADO.
Других решений пока нет …