gpt4 book ai didi

php - CodeIgniter 具有多种功能的交易

转载 作者:行者123 更新时间:2023-11-29 06:58:25 25 4
gpt4 key购买 nike

我需要在“产品”表中添加产品,我获取添加的产品 ID,然后在“产品详细信息”表中添加该产品的详细信息

在 CodeIgniter 的官方页面中,他们展示了如何执行此操作但不使用函数,例如:

$this->db->trans_start(TRUE); // Query will be rolled back
$this->db->query('AN SQL QUERY...');
$this->db->trans_complete();

我需要使用函数并仍然保持完整性,如果两个查询之一失败,则不会添加记录,我准备了以下代码,我想知道通过这种方式CodeIgniter是否能够检测到查询失败或无法撤消记录,或者是否有其他最佳实践或其他方法。

我没有使用 $this->db->query('AN SQL QUERY...')功能:

public function init_product()
{
$this->db->trans_begin();
$this->new_product();
$this->new_product_details();

if ($this->db->trans_status() === FALSE)
$this->db->trans_rollback();
} else {
$this->db->trans_commit();
}
}

添加产品并返回聚合产品 ID:

public function new_product()
{
$data = array(
'name' => $this->input->post('name'),
'details' => $this->input->post('details'),
'price' => $this->input->post('price')
);
$this->db->insert('products', $data);
if($this->db->affected_rows()) {
return $this->db->insert_id();
}
return false;
}

添加产品详细信息:

public function new_product_details()
{
$data = array(
'product_id' => $this->new_product(),
'user_id' => $this->session->id_user
);
$this->db->insert('products', $data);
if($this->db->affected_rows()) {
return true;
}
return false;
}

正如您所指定的,我需要知道这种方式是否有效,即使我没有遵循 CodeIgniter 中的示例,并且使用这些函数 CodeIgniter 是否可以检测数据库中的查询或插入是否失败,如果他们可以给我一些更好的例子。

最佳答案

你为什么要这样做?行不通。我看到您使用同一个表,所以为什么不在初始函数中执行此操作并在需要时返回插入 ID,如下所示:

public function init_product()
{
$this->db->trans_begin();

$data = array(
'name' => $this->input->post('name'),
'details' => $this->input->post('details'),
'price' => $this->input->post('price'),
'user_id' => $this->session->id_user
);

$this->db->insert('products', $data);

if ($this->db->trans_status() === FALSE)
$this->db->trans_rollback();
} else {
$this->db->trans_commit();
}

return $this->db->insert_id();
}

关于php - CodeIgniter 具有多种功能的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44676698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com