Codeigniter 查询生成器 class 个结果
Codeigniter query builder class results
在 codeigniter 查询构建器中假设每个成功的查询 class 是否安全,如果失败,它会自动 return true 和 false ?
如果是,它是否适用于 CRUD?还是仅在插入和删除数据时才正确?对于更新,我必须检查受影响的行吗?或者如果更新成功,它也会 return 一个真实的结果吗?
例如:
控制器:
$data = array('username' => $this->input->post('username'),
'password' => password_hash($this->input->post('password'), PASSWORD_BCRYPT),
'date_created' => mdate('%Y-%m-%d', time())
);
$result = $this->account_model->create($data);
if($result == TRUE){
$this->session->set_flashdata('message', 'Registration Successful');
redirect('pages/login');
}else{
$this->session->set_flashdata('message', 'Registration Failed');
redirect('pages/register');
}
型号:
public function create($new_user){
$insert = array('username' => $new_user['username'],
'password' => $new_user['password'],
'date_created' => $new_user['date_created']
);
$result = $this->db->insert('user', $insert);
return $result;
}
此外,如果我 return 编辑查询语句本身是不是很糟糕?喜欢,
return $this->db->insert('user', $insert);
没有。并不真地。
但是,您可以控制模型 return 的内容。请记住,例如,空结果集不一定是 "failed" 查询。在很多用例中,空结果集可能是一件好事。
实际上 运行 查询后,您将获得一个包含结果的对象
例如,在选择时,您可以执行 $result = $this->db->get()
并且您的 $result
变量将成为一个对象,其中包含您可以访问的大量信息:
returned 行数:$result->num_rows();
返回内容:$result->result();
特定行:$result->row(0);
特定行中的特定字段:$result->row(3)->field_name;
插入或更新时,$this->db->affected_rows()
可用,因此您可以检查更新或插入了多少行。如果您需要插入行的 table 主键值,插入还可以使 $this->db->insert_id()
可用。
因此,您可以控制逻辑。
在选择的时候,我通常是这样的:
$query = $this->db->get();
if ($query->num_rows() == 0)
{
return false;
}
else
{
return $query->row(0);
}
然后我在控制器中检查模型 return 是否为假或真实的结果集(有时我只是 return true
而不是实际的结果集,如果我是只是检查是否存在某些东西)。您可以根据需要定制结果。
插入时,我通常检查:
if ($this->db->affected_rows() != 0)
{
return $this->db->insert_id();
}
else
{
return false;
}
(在控制器中,被 return 编辑的 false
将被视为 "insertion failed")。
更全面地回答您的问题:不,默认情况下什么都没有发生,但 Codeigniter 为您提供了根据您的特定需求和品味定制网站行为所需的一切
在 codeigniter 查询构建器中假设每个成功的查询 class 是否安全,如果失败,它会自动 return true 和 false ?
如果是,它是否适用于 CRUD?还是仅在插入和删除数据时才正确?对于更新,我必须检查受影响的行吗?或者如果更新成功,它也会 return 一个真实的结果吗?
例如:
控制器:
$data = array('username' => $this->input->post('username'),
'password' => password_hash($this->input->post('password'), PASSWORD_BCRYPT),
'date_created' => mdate('%Y-%m-%d', time())
);
$result = $this->account_model->create($data);
if($result == TRUE){
$this->session->set_flashdata('message', 'Registration Successful');
redirect('pages/login');
}else{
$this->session->set_flashdata('message', 'Registration Failed');
redirect('pages/register');
}
型号:
public function create($new_user){
$insert = array('username' => $new_user['username'],
'password' => $new_user['password'],
'date_created' => $new_user['date_created']
);
$result = $this->db->insert('user', $insert);
return $result;
}
此外,如果我 return 编辑查询语句本身是不是很糟糕?喜欢,
return $this->db->insert('user', $insert);
没有。并不真地。 但是,您可以控制模型 return 的内容。请记住,例如,空结果集不一定是 "failed" 查询。在很多用例中,空结果集可能是一件好事。
实际上 运行 查询后,您将获得一个包含结果的对象
例如,在选择时,您可以执行 $result = $this->db->get()
并且您的 $result
变量将成为一个对象,其中包含您可以访问的大量信息:
returned 行数:$result->num_rows();
返回内容:$result->result();
特定行:$result->row(0);
特定行中的特定字段:$result->row(3)->field_name;
插入或更新时,$this->db->affected_rows()
可用,因此您可以检查更新或插入了多少行。如果您需要插入行的 table 主键值,插入还可以使 $this->db->insert_id()
可用。
因此,您可以控制逻辑。
在选择的时候,我通常是这样的:
$query = $this->db->get();
if ($query->num_rows() == 0)
{
return false;
}
else
{
return $query->row(0);
}
然后我在控制器中检查模型 return 是否为假或真实的结果集(有时我只是 return true
而不是实际的结果集,如果我是只是检查是否存在某些东西)。您可以根据需要定制结果。
插入时,我通常检查:
if ($this->db->affected_rows() != 0)
{
return $this->db->insert_id();
}
else
{
return false;
}
(在控制器中,被 return 编辑的 false
将被视为 "insertion failed")。
更全面地回答您的问题:不,默认情况下什么都没有发生,但 Codeigniter 为您提供了根据您的特定需求和品味定制网站行为所需的一切