控制器:
$next_id = $this->o->next_id();
$data['next_id']=$next_id;
型号:
public function next_id(){
$this->db->select_max('p_ori_id');
$max = $this->db->get('orientation_master');
if($max==0){
$next_id = 1;
}else{
$next_id = 1+$max;
}
return $next_id;
}
返回错误:
类CI_DB_mysqli_result的对象无法转换为int
请解决问题..
答案 0 :(得分:2)
希望这会对您有所帮助:
public function next_id()
{
$this->db->select_max('p_ori_id', 'max');
$query = $this->db->get('orientation_master');
// Produces: SELECT MAX(p_ori_id) as max FROM orientation_master
$max = $query->row()->max;
if($max == 0){
$next_id = 1;
}else{
$next_id = $max+1;
}
return $next_id;
}
更多信息:https://www.codeigniter.com/user_guide/database/query_builder.html
答案 1 :(得分:2)
对@pradeep没有冒犯,但如果你没有任何行,你可能会有一些意想不到的结果。我建议:
public function next_id()
{
$this->db->select_max('p_ori_id', 'max');
$query = $this->db->get('orientation_master');
if ($query->num_rows() == 0) {
return 1;
}
$max = $query->row()->max;
return $max == 0 ? 1 : $max + 1;
}
答案 2 :(得分:1)
您收到该错误,因为$max
是一个结果集对象,而不是您尝试使用它的整数记录值。
您可以尝试使用此功能获取下一个ID。
修改功能:
public function next_id(){
$this->db->select_max('p_ori_id', 'max');
$result = $this->db->get('orientation_master');
$row = $result->row_array();
$next_id = isset($row['max']) ? ($row['max']+1) : 1;
return $next_id;
}
如果列是自动增量,则可以使用以下代码。
<强>替代:强>
public function next_id() {
$sql_string = "SELECT `auto_increment` FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '".$this->db->dbprefix."orientation_master'";
$query = $this->db->query($sql_string);
$row = $query->row_array();
return $row['auto_increment'];
}