gpt4 book ai didi

php - 事务回滚功能在 Codeigniter 中不起作用

转载 作者:行者123 更新时间:2023-11-29 16:15:22 24 4
gpt4 key购买 nike

当我成功运行此代码时,数据插入到3个表中,并在第三个表插入查询中给出错误时提交,然后数据插入到第一个和第二个表中,而不是第三个表中,也不是回滚功能正常工作。我想要当第三个表查询不起作用时,第一个和第二个表插入数据将删除和删除。

    $this->db->trans_start(TRUE);

// 1st table insert query
$this->db->insert('users',$userInfo);
$userId = $this->db->insert_id();

$query = $this->db->query("SELECT `roleId` FROM `role` WHERE roleName='Clint';");
foreach ($query->result_array() as $row)
{ $roleId = $row['roleId']; }

$user_role = array( 'user_id' => $userId, 'role_id' => $roleId );
// 2nd table insert query
$this->db->insert('user_role', $user_role);

$city_id += [ "projectInfo" => $userId ];
// 3rd table insert query
$this->db->insert('project', $projectInfo);

$this->db->trans_complete();
if ($this->db->trans_status() === FALSE )
{
echo "Flase";
$this->db->trans_rollback();
}
else
{
echo "True";
$this->db->trans_rollback();
}

最佳答案

您正在手动回滚事务!在这种情况下,您应该使用

$this->db->trans_begin();不是 $this->db->trans_start();

CI 会自动回滚事务,您无需手动执行。如果使用$this->db->trans_start,则不需要$this->db->trans_rollback()。

注释掉 $this->db->trans_rollback(),或者保留它们并使用 $this->db->trans_begin(),然后检查结果。

https://www.codeigniter.com/user_guide/database/transactions.html

祝你好运!

关于php - 事务回滚功能在 Codeigniter 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855413/

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