====== getConnection ====== ~~NOTOC~~ == Applies To == [[v5:loadbalancer:index|ADOdb Load Balancer]] == Syntax == obj getConnection( optional string $connectionType = 'write', optional bool $pinConnection = null ) ===== Description ===== The method ''getConnection()'' gets a connection of the requested type ''(write/readonly)'' and ensures that the connection is established and all initialization is complete. The returned object is an [[v5:reference:connection:adonewconnection|ADOdb connection object]], which can be accessed in the normal way --------------------------- To ensure the accuracy of the response, you should have already executed at least one statement against the load balancer connection, or used a method such as **clusterExecute** ===== Usage ===== If the system could not determine whether the command to be executed is read-only or not, for example in a stored procedure, then this method can be used to retrieve a connection of the appropriate type. $db = new ADOdbLoadBalancer; $driver = 'mysqli'; $database = 'employees'; $user = 'adodb'; $password = 'adodb'; $host = '192.168.0.200'; $db0 = new ADOdbLoadBalancerConnection( $driver, 'write', 10, false, $host, $user, $password, $database ); /* * Add the connection to the pool */ $db->addConnection( $db0 ); $db1 = new ADOdbLoadBalancerConnection( $driver, 'readonly', 10, false, $host, $user, $password, $database ); /* * Add the connection to the pool */ $db->addConnection( $db1 ); /* * Execute something to ensure connection accuracy */ $db->clusterExecute('SET SESSION 1=1'); /* * Find a readwrite connection, pin it for the next statement */ $db->getConnection('write',$pin=true); /* * Now construct a stored procedure and execute it against $db, * because it is pinned, it will execute against the 'write' node */ $stmt = $db->PrepareSP('kmnProc'); $val1 = 'ADMIN'; $par1 = 'users'; $db->InParameter($stmt,$val1,$par1); $db->OutParameter($stmt,$ret,'RETVAL');