Eh bien, j'ai découvert que la fonction _execute() dans CI_DB_pdo_driver à l'intérieur du système codeigniter ne fonctionnait pas correctement, c'est peut-être à cause de la version php. Quoi qu'il en soit, j'ai changé le code du CodeIgniter de :
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;
}
La partie qui teste si le $sql contient un "SELECT" à l'intérieur ne fonctionnait pas, donc quand j'ai essayé d'INSÉRER le "$result_id->execute()" était appelé deux fois.