खैर, मुझे पता चला कि कोडनिर्देशक प्रणाली के अंदर CI_DB_pdo_driver में _execute() फ़ंक्शन ठीक से काम नहीं कर रहा था, शायद यह PHP संस्करण के कारण है। वैसे भी मैंने कोडइग्निटर का कोड यहां से बदल दिया है:
function _execute($sql)
{
$sql = $this->_prep_query($sql);
$result_id = $this->conn_id->prepare($sql);
$result_id->execute();
if (is_object($result_id))
{
if (is_numeric(stripos($sql, 'SELECT')))
{
$this->affect_rows = count($result_id->fetchAll());
$result_id->execute();
}
else
{
$this->affect_rows = $result_id->rowCount();
}
}
else
{
$this->affect_rows = 0;
}
return $result_id;
}
प्रति:
function _execute($sql)
{
$sql = $this->_prep_query($sql);
$result_id = $this->conn_id->prepare($sql);
$result_id->execute();
if (is_object($result_id))
{
if (preg_match('/^\s*"?(SELECT)\s+/i', $sql))
{
$this->affect_rows = count($result_id->fetchAll());
$result_id->execute();
}
else
{
$this->affect_rows = $result_id->rowCount();
}
}
else
{
$this->affect_rows = 0;
}
return $result_id;
}
वह भाग जो परीक्षण करता है कि क्या $sql में उसके अंदर "SELECT" है, वह काम नहीं कर रहा था, इसलिए जब मैंने INSERT करने की कोशिश की तो "$result_id->execute ()" को दो बार कॉल किया जा रहा था।