文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

php事务回滚不了如何解决

2023-07-04 10:08

关注

这篇文章主要介绍了php事务回滚不了如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php事务回滚不了如何解决文章都会有所收获,下面我们一起来看看吧。

php事务回滚不了的解决办法:1、打开相应的PHP文件;2、检查“function update_user_set_date_of_birth($date_of_birth){...}”代码;3、通过“$this->mysqli->autocommit(false);”方式关闭自动提交即可。

php事务回滚不了怎么办?

问题描述:

关于php 事务未执行回滚

mysqliphptransactionsTransactions not doing the rollback

我具有更新用户的功能:

function update_user_set_common($date_of_birth, $mobile, $street, $housenumber, $addition, $postal_code, $location, $country){    try {        $this->mysqli->begin_transaction();        $this->update_user_set_date_of_birth($date_of_birth);        $this->update_user_set_mobile($mobile);        $this->update_user_set_address($street, $housenumber, $addition, $postal_code, $location, $country);        $this->mysqli->commit();        return true;    } catch (Exception $e) {        $this->mysqli->rollback();        echo"Error:" . $e;        return false;    }}

如您所见,我进行了一笔交易。如果一切正常,则应提交,如果发生错误,则应回滚。

这是我的更新查询方式的一个示例:

function update_user_set_date_of_birth($date_of_birth){    return $this->update_user_set_singlefield(COL_USER_DATE_OF_BIRTH, $date_of_birth);}function update_user_set_singlefield($field, $value){    if ($update_stmt = $this->mysqli->prepare("UPDATE" . TABLE_USER ." SET" . $field ." = ? WHERE" . COL_USER_ID ." = ?")) :        if (!$update_stmt->bind_param("ss", $value, $this->USER_ID)) :            $update_stmt->close();            return false;        endif;        if (!$update_stmt->execute()) :            $update_stmt->close();            return false;        else :            $update_stmt->close();            return true;        endif;    else :        return false;    endif;}

因此现在例如update_user_set_mobile失败,但是没有回滚。 update_user_set_date_of_birth之前的语句仍然会执行,并且不会变回原先。

为什么没有回滚?

示例创建表以显示我使用innodb:

CREATE TABLE `USER` (  `USER_ID` bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT,  `USER_E_MAIL` varchar(255) COLLATE utf8_bin NOT NULL,  `USER_PASSWORT` varchar(255) COLLATE utf8_bin NOT NULL,  `USER_PASSWORT_SALT` varchar(255) COLLATE utf8_bin NOT NULL,  `USER_FIRSTNAME` varchar(255) COLLATE utf8_bin NOT NULL,  `USER_LASTNAME` varchar(255) COLLATE utf8_bin NOT NULL,  `USER_DATE_OF_BIRTH` varchar(200) COLLATE utf8_bin DEFAULT NULL,  `USER_MOBILE` varchar(255) COLLATE utf8_bin DEFAULT NULL,  `ADDRESS_ID` bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

问题解决:

关闭自动提交而不是mysqli-> begin_transaction();

$this->mysqli->autocommit(false)

php有什么特点

1、执行速度快。

2、具有很好的开放性和可扩展性。

3、PHP支持多种主流与非主流的数据库。

4、面向对象编程:PHP提供了类和对象。

5、版本更新速度快。

6、具有丰富的功能。

7、可伸缩性。

8、功能全面,包括图形处理、编码与解码、压缩文件处理、xml解析等。

关于“php事务回滚不了如何解决”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“php事务回滚不了如何解决”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯