关于mysql事务的疑问
mysql_query(begin);
$result=mysql_query(update vip set time='.$intime.'. where user='.$uid.' and . setype='.$usetype.');
if (!$result)
{
echo ///0///;
mysql_query(rollback);
return;
}
$result=mysql_query(update addcard set time=curdate().,userw='.$uid.',sev='.$usetype.' where card='.$card.');
if (!$result)
{
echo ///0///;
mysql_query(rollback);
return;
}
mysql_query(rollback);
刚学php,上面的代码执行后,按照个人的理解,应该两条两条语句都没能修改数据库,但是执行后去查看数据库,发现第一条确实没修改数据库,但是第二条语句去真实修改了,不知是不是我的代码有问题,如果是的话,希望高手们说下,代码应该怎样修改,才能让两条语句保持一致性,即要么都修改数据,要么都不修改
------解决方案--------------------
mysql_query(set autocommit=0); 先設置不自動commit
然後在成功的位置,加入 mysql_query(commit);
mysql_query(begin);?
mysql_query(set autocommit=0); ?
?
$result=mysql_query(update?vip?set?time='.$intime.'.where?user='.$uid.'?and?.?setype='.$usetype.');
if?(!$result){
echo?///0///;
mysql_query(rollback);?
return;
? }
?
$result=mysql_query(update?addcard?set?time=curdate().,userw='.$uid.',sev='.$usetype.'where?card='.$card.');
if (!$result){
echo?///0///;
mysql_query(rollback);?
return;
}
mysql_query(commit);
------解决方案--------------------
长连接也是一样的