Php 为什么mysqli::multi_查询在一定数量的行之后停止?
我正在尝试使用multi_查询在表上运行大量的更新/插入。总共有14000个查询,但该函数仅执行480个,然后停止,没有错误,PHP继续执行脚本,超出以下中断:Php 为什么mysqli::multi_查询在一定数量的行之后停止?,php,mysql,codeigniter,mysqli-multi-query,Php,Mysql,Codeigniter,Mysqli Multi Query,我正在尝试使用multi_查询在表上运行大量的更新/插入。总共有14000个查询,但该函数仅执行480个,然后停止,没有错误,PHP继续执行脚本,超出以下中断: if($this->db->conn_id->multi_query($sql)){ do{ // echo $line.' '.mysqli_sqlstate($this->db->conn_id).'<br>'; }while($this->db->
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());
$this->message->set('Import complete.','success',TRUE);
}else{
$this->message->set('Import could not be completed. '.mysqli_error($this->db->conn_id),'error',TRUE);
}
if($this->db->conn\u id->multi\u query($sql)){
做{
//echo$line.''.mysqli_sqlstate($this->db->conn_id)。'
';
}而($this->db->conn_id->more_results()&&$this->db->conn_id->next_result());
$this->message->set('Import complete','success',TRUE);
}否则{
$this->message->set('导入无法完成。'.mysqli_错误($this->db->conn_id),'error',TRUE);
}
mysqli::multi_query仅在第一条语句失败时返回false。要从集合中的其他查询中获取错误,需要首先调用mysqli::next_result(),while()就是这样做的
但是,由于mysqli::next_result()在失败时返回false,因此将导致循环结束并显示“Import complete”消息。您可能需要在设置成功消息之前检查错误,并且只有当错误为空时,才返回success
如果语句后面有错误,下面至少应该向您显示错误
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);
}
if($this->db->conn\u id->multi\u query($sql)){
做{
//echo$line.''.mysqli_sqlstate($this->db->conn_id)。'
';
}而($this->db->conn_id->more_results()&&$this->db->conn_id->next_result());
如果($error=mysqli\u error($this->db->conn\u id)){
$this->message->set('导入无法完成'。$error,'error',TRUE);
}else$this->message->set('Import complete','success',TRUE);
}否则{
$this->message->set('导入无法完成。'.mysqli_错误($this->db->conn_id),'error',TRUE);
}
查询在到达大约480行之前运行多长时间(以秒为单位)?CI是否将任何错误记录到日志文件中?@Xoc查询在失败之前运行不到一秒钟。实际上,查询本身没有错误。我传入了一个sql文件的内容,它通过命令行或gui工具运行良好。