如何在php/mysql中使用事务

2024-05-22

我正在使用 php/mysql。我知道 mysql 中的事务,但不能在我的脚本中使用。下面是我的脚本,如何在我的代码中使用 php 事务。即 BEGIN、ROLLBACK、COMMIT

foreach($json_a['shop'] as $jsondata=>$json)
{
if($json['category']==='product')
{
$name_product=$json['name'];
$query1="insert into product(id,name,user_id)values('','" . mysql_real_escape_string($name_product). "','1')";

$result1=mysql_query($query1) or die("error in query".mysql_errno());
//echo "success...!";
$product++;
}
else
if($json['category']==='order')
{
$name_order=$json['name'];
$query2="insert into order(id,name,user_id)values('','" . mysql_real_escape_string($name_order). "','1')";

$result2=mysql_query($query2) or die("error in query".mysql_errno());
$order++;
}
else
if($json['category']==='sale')
{
$name_sale=$json['name'];
$query3="insert into sale(id,name,user_id)values('','" . mysql_real_escape_string($name_sale). "','1')";

$result3=mysql_query($query3) or die("error in query".mysql_errno());
$sale++;
}
}

简单地发出mysql_query('START TRANSACTION');并检查每一个插入内容是否有错误。如果其中之一不成功,请立即发出 ROLLBACK,而不执行任何其余查询。如果一切顺利,则发出 COMMIT。

将它们放在 try-catch 块中可能更容易,以避免使用 if-else 的过多嵌套级别。

// START TRANSACTION
try{
    // INSERT 1
    if(failed)
        throw new Exception();

    // INSERT 2
    if(failed)
        throw new Exception();

    // INSERT 3
    if(failed)
        throw new Exception();

    // COMMIT
}
catch(Exception $e){
    // ROLLBACK
}

您可能还想了解一下 PHPPDO扩展 http://www.php.net/manual/en/pdo.transactions.php。交易是其功能的一部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在php/mysql中使用事务 的相关文章

  • 通过删除空 GET 变量并简化变量名称来缩短 URL

    我正在开发一个网站 在提交后组成一个 URLGET form 表单值作为一组变量传递 其中必须至少定义一个变量才能在数据库上进行搜索 我想将网址缩短为删除空表单元素并使其更加用户友好简化变量名称 目前 URL 如下所示 只是带有更多变量 我
  • 当异常抛出到路由之外时,如何在 Slim 框架中传递错误页面?

    我正在尝试了解处理 Slim 框架应用程序中抛出的异常和最终页面交付的操作顺序 基本上 如果我在类中抛出异常 我希望 Slim 提供漂亮的 Twig 500 页面 但当在路由之外抛出异常时 我什至无法让 Slim 提供自己的正常错误页面 给
  • 使用 fgetcsv 循环遍历 csv

    我有一个包含 3 列的 csv 文件 电子邮件地址 名 and 姓 我已经到了可以使用以下代码打印数组的阶段 这会打印数组 因此每个字段都在一行中 我希望它打印的只是该行第一列中的值 这是如何完成的 关于 fgetcsv 的文档对我 相对初
  • JSON 为 foreach() 提供的参数无效

    我在从 JSON 检索数据时遇到一些问题 它总是说为 foreach 提供的参数无效 这是 url php 中的 JSON nama IT SERVICE SOLUTION nilai 0 periode 11 tahun 2014 nam
  • Blade @if 中的 Laravel 会话变量

    当我尝试使用 Laravel Session 在刀片中设置 JS 变量来刷新一些数据时 我在 Laravel 4 2 中遇到了一些奇怪的情况 这很简单 我不知道我错过了什么 目标 在用户注册后立即触发 Javascript 网站浏览 方法
  • array_udiff_assoc() 和 array_diff_uassoc() 有什么区别?

    有什么区别array udiff assoc and array diff uassoc For array udiff assoc 我有这个代码 function myfunction v1 v2 if v1 v2 return 0 re
  • MySQL 存储过程将值分配给 select 语句中的多个变量

    这是我的存储过程 我在为声明的变量赋值时遇到问题 当我执行它时 插入和更新命令工作正常 但声明变量的值保持为 0 但我在数据库中有一些价值 我怎样才能正确地做到这一点 BEGIN DECLARE PaidFee INT DEFAULT 0
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • 为什么index.html优先于index.php?

    我在服务器上有一个网站 主页是 example com index php 好的 我将一个名为 index html 的文件上传到服务器 根目录 当我在浏览器的 URL 栏中输入站点的域时 我感到惊讶 因为 index html 页面已加载
  • 如何在 apache 上为锚点 cms 重写指令

    我使用的是一个名为anchor的cms http anchorcms com docs getting started configuration http anchorcms com docs getting started config
  • TCPDF UTF-8 符号未显示

    我使用最新的 TCPDF 版本 5 9 但在编码方面遇到一些奇怪的问题 我需要立陶宛语语言符号 例如 但只能得到其中的一小部分 其他的还是这样 所以我该怎么做 我使用默认的 times 字体 它带有 TCPDF 下载 任何帮助 将不胜感激
  • Symfony2 Twig 扩展

    我在实现树枝扩展时遇到一些问题 我需要创建自己的过滤器 子过滤器 所以我想到了使用twig扩展 我在 MyApp Bundle WebsiteBundle 和文件上创建了一个名为 Extension 的文件夹 网站扩展 php namesp
  • Laravel 集成测试:如何断言一个 URL 已被调用但另一个 URL 没有

    我想测试一个向某个 URL 发出请求的控制器 例如 http example com api say hello 但它不会向另一个 URL 发出请求 例如 http example com api say bye bye 我想测试的控制器功
  • 显示表中的记录

    我的第一个 PHP 项目遇到了一些麻烦 我试图从 MySQL 数据库 有 3 条记录 获取数据并将其显示在表格中 问题是它似乎只显示记录 2 和 3 它跳过了第 1 条记录 请参阅我的代码并在下面显示 if mysqli connect e
  • 是否必须配置 PHP 才能通过 PHP 扫描每个目录的配置 INI 文件(即我的情况下的 .htaccess 文件)?

    我在用着Windows 10 家庭单语言 64 位操作系统在我的机器上 我已经安装了最新的副本XAMPP服务器在我的机器上附带PHP 7 2 7 我从 PHP 手册中阅读了以下页面 扫描目录 https secure php net man
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • WooCommerce 使用 AJAX 设置购物车数量?

    我已经为此绞尽脑汁好几天了 需要一些指导 我正在为 WooCommerce 网站完全从头开始制作自定义主题 现在我正在尝试让购物车功能正常工作 我一直试图使用按钮 来更新购物车中产品的数量 对我来说问题似乎是WC 我在functions p
  • 使用 php 获取当前月份的最后 3 个月

    我想获取当前月份最近 3 个月的名称 例如当前月份是八月 所以 我想要六月 七月 八月这样的数据 我已经尝试过这段代码echo date F strtotime 3 months 它只返回六月 如何使用 php 获取当前月份的最后 3 个月
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t

随机推荐