mysqli :: multi_query возвращает false только в случае неудачного выполнения первого оператора.Чтобы получить ошибки из других запросов в вашем наборе, вам нужно сначала вызвать mysqli :: next_result (), что и делает ваш while ().
Однако, поскольку mysqli :: next_result ()возвращает false при ошибке, это приведет к завершению цикла и появлению сообщения «Импорт завершен».Возможно, вам нужно проверить наличие ошибки перед установкой сообщения об успешном завершении, и только если ошибка пустая, вернуть сообщение об успехе.
Следующее должно как минимум показывать вам ошибку, если она была обнаружена позже в операторе.1005 *
if($this->db->conn_id->multi_query($sql)){
do{
// echo $line.' '.mysqli_sqlstate($this->db->conn_id).'<br>';
} 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);
}