gpt4 book ai didi

php - 如何在php/mysql中使用事务

转载 作者:可可西里 更新时间:2023-11-01 06:31:35 26 4
gpt4 key购买 nike

我正在使用 php/mysql。我知道 mysql 中的事务,但不能在我的脚本中使用。下面是我的脚本我如何在我的代码中使用 php 事务。即开始、回滚、提交

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 block 中可能更容易,以避免在 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
}

您可能还想查看 PHP 的 PDO extension .交易是其功能的一部分。

关于php - 如何在php/mysql中使用事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5242098/

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