(PHP 4, PHP 5, PHP 7, PHP 8)
odbc_pconnect — Открывает постоянное соединение с базой данных
$dsn,$user = null ,$password = null ,$cursor_option = SQL_CUR_USE_DRIVER Функция открывает постоянное соединение с базой данных.
Функция похожа на функцию odbc_connect() , за исключением
того, что соединение на самом деле не закрывается после завершения работы
скрипта. Очередные запросы на соединение с той же комбинацией аргументов
dsn, user и password,
которые выполняют функциями odbc_connect()
и odbc_pconnect(), могут повторно использовать постоянное
соединение.
Подробне о соединении с источником данных рассказывает описание функции odbc_connect() .
Функция возвращает ODBC-соединение или false , если возникла ошибка.
| Версия | Описание |
|---|---|
| 8.4.0 | Функция теперь возвращает экземпляр соединения Odbc\Connection ; раньше возвращалось значение с типом resource . |
| 8.4.0 |
Параметры user и password теперь допускают
значение null ; они теперь являются необязательными и по умолчанию имеют значение null .
|
| 8.4.0 |
Ранее использование пустой строки для параметра password не включало pwd
в генерируемую строку подключения параметра dsn.
Теперь он генерируется для включения pwd,
который имеет пустую строку в качестве своего значения.
Чтобы восстановить прежнее поведение, в параметр password
теперь можно передать значение null .
|
| 8.4.0 |
Ранее, если dsn содержал uid или pwd,
параметры user и password игнорировались.
Теперь параметр user игнорируется, только если значение параметра dsn
содержит uid, а параметр password игнорируется,
только если значение параметра dsn содержит pwd.
|
Замечание: Постоянные соединения не действуют, если PHP работает в режиме CGI.
The following constants are defined for cursortype:
- SQL_CUR_USE_IF_NEEDED
- SQL_CUR_USE_ODBC
- SQL_CUR_USE_DRIVER
- SQL_CUR_DEFAULT
With some ODBC drivers, executing a complex stored procedure may fail with an error similar to: "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it". Using SQL_CUR_USE_ODBC may avoid that error. Also, some drivers don't support the optional row_number parameter in odbc_fetch_row(). SQL_CUR_USE_ODBC might help in that case, too.I found that using odbc_close($odbchandle) on a connection opened by odbc_pconnect() causes a warning "not a valid ODBC-Link resource". So you can't just change odbc_connect() to odbc_pconnect() and expect things to work without warning messages. However, you can use odbc_close_all() and not get a warning.Ok, learning time. As I was told by the PHP-DevTeam...
Multiple connections are supported, but when you try to connect with exactly the same parameters, an existing
connection will be reused, leading to the behaviour you see.
You can simply omit the calls to odbc_close() since
connections get closed on script termination anyway or better:
Consider making your connection id a global variable or pass
it to your functions.