Friday, October 25, 2013

Warning in postgre_driver.php di Code Igniter


I get following message with Postgre insert_id
A PHP Error was encountered
Severity: Warning
Message: Illegal string offset 'server'
Filename: postgre/postgre_driver.php
Line Number: 331
$v = $this->_version();
$v = $v['server'];
function _version()
{
return "SELECT version() AS ver";
}

Just wanted to update...
I replaced the insert_id function with the new bits from 3.x code which resolved the issue:
public function insert_id()
{
    $v = pg_version($this->conn_id);
    $v = isset($v['server']) ? $v['server'] : 0; // 'server' key is only available since PosgreSQL 7.4

    $table  = (func_num_args() > 0) ? func_get_arg(0) : NULL;
    $column = (func_num_args() > 1) ? func_get_arg(1) : NULL;

    if ($table === NULL && $v >= '8.1')
    {
        $sql = 'SELECT LASTVAL() AS ins_id';
    }
    elseif ($table !== NULL)
    {
        if ($column !== NULL && $v >= '8.0')
        {
            $sql = 'SELECT pg_get_serial_sequence(\''.$table."', '".$column."') AS seq";
            $query = $this->query($sql);
            $query = $query->row();
            $seq = $query->seq;
        }
        else
        {
            // seq_name passed in table parameter
            $seq = $table;
        }

        $sql = 'SELECT CURRVAL(\''.$seq."') AS ins_id";
    }
    else
    {
        return pg_last_oid($this->result_id);
    }

    $query = $this->query($sql);
    $query = $query->row();
    return (int) $query->ins_id;
}

0 comments: