Returns a persistent connection to an IBM DB2 Universal Database, IBM Cloudscape, or Apache Derby database.
For more information on persistent connections, refer to Persistent Database Connections.
Calling db2_close() on a persistent connection always returns TRUE
, but the underlying DB2 client connection remains open and waiting to serve the next matching db2_pconnect() request.
Users running version 1.9.0 or later of ibm_db2 should be aware that the extension will perform a transaction rollback on persistent connections at the end of a request, thus ending the transaction. This prevents the transaction block from carrying over to the next request which uses that connection if script execution ends before the transaction block does.
The database alias in the DB2 client catalog.
The username with which you are connecting to the database.
The password with which you are connecting to the database.
An associative array of connection options that affect the behavior of the connection, where valid array keys include:
Returns a connection handle resource if the connection attempt is successful. db2_pconnect() tries to reuse an existing connection resource that exactly matches the database
, username
, and password
parameters. If the connection attempt fails, db2_pconnect() returns FALSE
.
Active transactions within a persistent connection will be rolled back at the end of each request.
The i5_libl
option is available for i5/OS users.
The trustedcontext
option is available.
The i5_lib
, i5_naming
, i5_commit
, i5_query_optimize
, i5_dbcs_alloc
, i5_date_fmt
, i5_date_sep
, i5_time_fmt
, i5_time_sep
and i5_decimal_sep
options are available for i5/OS users.
In the following example, the first call to db2_pconnect() returns a new persistent connection resource. The second call to db2_pconnect() returns a persistent connection resource that simply reuses the first persistent connection resource.
<?php $database = 'SAMPLE'; $user = 'db2inst1'; $password = 'ibmdb2'; $pconn = db2_pconnect($database, $user, $password); if ($pconn) { echo "Persistent connection succeeded."; } else { echo "Persistent connection failed."; } $pconn2 = db2_pconnect($database, $user, $password); if ($pconn) { echo "Second persistent connection succeeded."; } else { echo "Second persistent connection failed."; } ?>
The above example will output:
Persistent connection succeeded. Second persistent connection succeeded.
The following example shows how to enable trusted context, switch users, and get the current user ID.
<?php $database = "SAMPLE"; $hostname = "localhost"; $port = 50000; $authID = "db2inst1"; $auth_pass = "ibmdb2"; $tc_user = "tcuser"; $tc_pass = "tcpassword"; $dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port; PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;"; $options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE); $tc_conn = db2_pconnect($dsn, "", "", $options); if($tc_conn) { echo "Explicit trusted connection succeeded.\n"; if(db2_get_option($tc_conn, "trustedcontext")) { $userBefore = db2_get_option($tc_conn, "trusted_user"); //Do some work as user 1. //Switching to trusted user. $parameters = array("trusted_user" => $tc_user, "trusted_password" => $tcuser_pass); $res = db2_set_option ($tc_conn, $parameters, 1); $userAfter = db2_get_option($tc_conn, "trusted_user"); //Do more work as trusted user. if($userBefore != $userAfter) { echo "User has been switched." . "\n"; } } db2_close($tc_conn); } else { echo "Explicit trusted connection failed.\n"; } ?>
The above example will output:
Explicit trusted connection succeeded. User has been switched.
Please login to continue.