|
|
 |
(PHP 3>= 3.0.6, PHP 4 ) odbc_pconnect --
Ouvre une connexion persistante à une source de données.
Descriptionresource odbc_pconnect ( string dsn, string user, string password [, int cursor_type])
odbc_pconnect() retourne un identifiant de connexion
ODBC ou 0 (FALSE) en cas d'erreur.
odbc_pconnect() se comporte de manière similaire
à odbc_connect(), mais la connexion ouverte
n'est pas vraiment terminée lorsque le script est
terminé. Les prochaines requêtes qui se
feront sur une connexion dont les dsn,
user, password
sont les mêmes que celle-ci (avec
odbc_connect() et odbc_pconnect())
réutiliseront la connexion ouverte.
Note :
Les connexions persistantes n'ont aucun effet
si PHP est utilisé comme CGI.
Pour plus de détails sur le paramètre optionnel
cursor_type, voyez odbc_connect().
Pour plus de détails sur les connexions persistantes,
reportez-vous à la FAQ PHP.
User Contributed Notes odbc_pconnect |
 |
etsai at email dot com
29-Jun-2000 04:10 |
|
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.
|
|
wls at wwco dot com
11-Aug-2000 02:44 |
|
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.
|
|
j_schrab at execpc dot com
15-Jan-2001 11:15 |
|
I found that under PHP 4.0.4 / IIS / CGI, odbc_pconnect problems occur
under normal odbc_connect.
Example:
function a()
{
$connect =
odbc_connect(DB_DSN,DB_USERNAME,DB_PASSWORD);
$query = "SELECT a
FROM e";
$result = odbc_exec($connect,
$query);
while(odbc_fetch_row($result)){
print
odbc_result($result, 1);
} //
while
odbc_close($connect);
return true;
} //
a
function b() {
$connect =
odbc_connect(DB_DSN,DB_USERNAME,DB_PASSWORD);
$query = "SELECT b
FROM e";
$result = odbc_exec($connect,
$query);
while(odbc_fetch_row($result)){
if
(odbc_result($result, 1) == 'z') {
a();
} // if
print
odbc_result($result, 1);
} //
while
odbc_close($connect);
return true;
} //
b
A call to function "b" will cause a "Warning: 2
is not a valid ODBC result resource" for "odbc_fetch_row"
*if* odbc_result($result, 1) == 'z' was true and, as a result, function
"a" was called. This seems like a bug. Like the
"odbc_close" in function "a" is affecting the
condition of the value of "$result" in function "b".
Surely PHP allows multple connections to an ODBC data source, right?!
|
|
j_schrab at execpc dot com
16-Jan-2001 04:41 |
|
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.
|
|
alberici at to dot infn dot it
15-Jul-2002 11:42 |
|
I saw that closing an ODBC persistent connection opened with
odbc_pconnect() with odbc_close() doesnt work. Someone here have proposed
using odbc_close_all() but wouldnt that close all persistent connections
(also others ones !!!) ? What about catching a persistent handle with
odbc_connect() and then closing the connection with odbc_close() ? If
there are no available handles (for some reason the last pconn has been
closed) this approach opens and close a normal single-script connection.
Waiting comments...
|
|
 |
| |