[eluser]cyu021[/eluser]
Tried to use oci_bind_by_name() for Oracle DB and couldn't get it to work.
Then I find there is some fix need to be done in CI's code.
This is how I apply the fix.
Step 1.
_CI_ROOT_/system/database/DB_driver.php >>>
line 293:
Code:
--
if (FALSE === ($this->result_id = $this->simple_query($sql)))
++
if (FALSE === ($this->result_id = $this->simple_query($sql, $binds)))
line 440:
Code:
--
function simple_query($sql)
++
function simple_query($sql, $binds=FALSE)
line 447:
Code:
--
return $this->_execute($sql);
++
return $this->_execute($sql, $binds);
Step 2.
_CI_ROOT_/system/database/drivers/oci8/oci8_driver.php >>>
line 165:
Code:
--
function _execute($sql)
++
function _execute($sql, $binds=FALSE)
line 172-172:
Code:
--
++
if($binds != FALSE) {
foreach($binds as $k => $bind) {
oci_bind_by_name($this->stmt_id, $bind['name'], $bind['value']);
}
}
How to use it:
Code:
$sql = "insert
into related_firm
(
TYPE,
NAME,
CONTACT_ADDR,
CONTACT_NUMBER,
CONTACT_FAX,
SN
)
values
(
:TYPE,
:NAME,
:CONTACT_ADDR,
:CONTACT_NUMBER,
:CONTACT_FAX,
:SN
)";
$params[] = array('name'=>':TYPE', 'value'=>$this->type);
$params[] = array('name'=>':NAME', 'value'=>$this->name);
$params[] = array('name'=>':CONTACT_ADDR', 'value'=>$this->contactAddress);
$params[] = array('name'=>':CONTACT_NUMBER', 'value'=>$this->contactNumber);
$params[] = array('name'=>':CONTACT_FAX', 'value'=>$this->contactFax);
$params[] = array('name'=>':SN', 'value'=>$this->serialNumber);
$db = $this->load->database('TESTDB', TRUE);
$db->query($sql, $values, TRUE);