mysqli :: multi_query returns only false if the first statement fails. To get errors from other queries in your set, you first need to call mysqli :: next_result (), which is what your while () does.
, mysqli:: next_result() false , " ". , , , .
, , , .
if($this->db->conn_id->multi_query($sql)){
do{
} while($this->db->conn_id->more_results() && $this->db->conn_id->next_result());
if ($error = mysqli_error($this->db->conn_id)) {
$this->message->set('Import could not be completed. ' . $error,'error',TRUE);
} else $this->message->set('Import complete.','success',TRUE);
} else {
$this->message->set('Import could not be completed. '.mysqli_error($this->db->conn_id),'error',TRUE);
}