Codeigniter with oracle

Now let me show how to make..CI connect with oracle database..
there are some things we need to prepare

  •   make sure our web server already supports connections to Oracle databases by checking through browser.with create a some *.php file with the contents
<?;
phpinfo();
?>
 and you will see a description like in the picture below


if the information is there then there is ready to work with Oracle database.or if not then you need to set up your web server settings .. see how web servers work with the Oracle database this link


Connection Parameters

Not all of the parameters in application/config/database.php are used as one might expect.  Namely, $db[‘default’][‘database’] isn’t used at all.  The value used for $db[‘default’][‘hostname’] depends on whether the Oracle client’s tnsnames.ora file exists and contains information about the database to be used.  If the file exists and is configured for the intended database, this parameter should be set to the symbolic name.  Otherwise, it should be set to a single string of the connection parameters that tnsmames.ora would normally contain.
An example of connection parameters for the latter case:

$db['default']['hostname''(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbhost.example.com)(PORT=1521))(CONNECT_DATA=(SID=dbsid)))';
$db['default']['username''dbuser';
$db['default']['password''dbpassword';
$db['default']['database'''// not used by this Oracle driver
$db['default']['dbdriver''oci8'


In this case, the appropriate values need to be set for the HOST, PORT, and SID keywords in the hostname parameter.

Different queries return the same results

If you run two different queries in the same script you can run into the problem, that both queries return the same result.

Example

$this->load->database();
$query1 $this->db->query("SELECT * FROM table1");
$result1 $query1->result(); // Returns Value of table 1
$query1->free_result();

$query2 $this->db->query("SELECT * FROM table2");
$result2 $query2->result(); // Also returns Value of table 1 

Solution

In file codeigniter/database/driver/oci8/oci8_driver.php you should change the lines

function _set_stmt_id($sql)
    
{
        
if ( ! is_resource($this->stmt_id))
        
{
            $this
->stmt_id ociparse($this->conn_id$this->_prep_query($sql));
        
}
    } 
 
to


function _set_stmt_id($sql)
    
{
        $this
->stmt_id ociparse($this->conn_id$this->_prep_query($sql));
    



happy CI..^_^

    No comments: