我正在使用 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(使用前将#替换为@)