我不确定如何措辞,但是我的例子应该有所帮助.我遇到以下问题:
拍卖中有3个竞标者:
>第一个出价为$1,然后从他们的帐户中扣除此金额.
>第二位竞标者出价$2,因此第一位竞标者将被退回,而第二位竞标者的余额将被扣除.
>但是,退还第一名投标人的脚本尚未完成,第三名投标人发送了一个出价3美元的请求.
>由于脚本尚未完成,因此它仍将第一出价者作为最高出价,因此开始再次退款.
在所有这些脚本执行完毕后,投标人1退款两次,而投标人2的投标才消失.
我听说Database Transactions可能会有帮助,但是我不确定如何做到.
解决方法:
您的第二个脚本包括与数据库的两次交互.默认情况下,每个DB语句都作为单个事务执行.在您的情况下,您需要将第二个脚本作为单个事务进行交互.这样可以防止在第二个脚本完成之前启动第三个脚本(也应作为单个事务运行).有关使用PHP和MysqL执行多语句事务的示例,请参见PHP + MySQL transactions examples.