php mysql 事务怎么写

php mysql 事务怎么写,第1张

/**

 * 启动事务

 * @return bool

 */

public function begin()

{

if ($this->transDepth == 0)

{

$this->query('START TRANSACTION')

}

$this->transDepth++

return TRUE

}

/**

 * 事务提交

 * @return bool

 */

public function commit()

{

if ($this->transDepth > 0)

{

$result = $this->query('COMMIT')

$this->transDepth = 0

if(!$result) die("err:trans commit ".mysql_error())

}

return TRUE

}

/**

 * 事务回滚

 * @return bool

 */

public function rollback()

{

if ($this->transDepth > 0)

{

$result = $this->query('ROLLBACK')

$this->transDepth = 0

if(!$result) die("err:trans commit ".mysql_error())

}

return TRUE

}

如果是JDBC其实很简单,就是先setAutoCommit(false)然后把你的数据库 *** 作语句都执行完了,再手动调用commit方法就行了,所谓的事务其实原则上很简单,尤其是关系型数据库,说白了就是所有的SQL成功了才提交,不成功就rollback仅此而已

这个直接用mysql语句我不知道怎么实现,借助PHP还是比较简单的。

注意,表必须为InnoDB或DBD类型,其他类型不支持Transaction事务。

下面是一段PHP代码,用来实现确认和出错回滚:

mysql_query("SET AUTOCOMMIT=0")

$sql1='insert "user" values("A")'

$sql2='insert "user" values("B")'

$sql3='insert "user" values("C")'

$res1 = mysql_query($sql1)

$res2 = mysql_query($sql2)

$res3 = mysql_query($sql3)

if($res1 &&$res2 &&$res3)

mysql_query("COMMIT")

else

mysql_query("ROLLBACK")


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8510973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存