关于MYSQL事务的疑问
mysql_query("BEGIN"); <br /> <br /> $result=mysql_query("UPDATE vip set time='".$intime."'"." where user='".$uid."' and ". "setype='".$usetype."'");<br /> if (!$result)<br /> {<br /> echo "///0///";<br /> mysql_query("ROLLBACK"); <br /> return;<br /> }<br /><br />$result=mysql_query("UPDATE addcard set time=curdate()".<div style="color:transparent">本&文来源gaodai^.ma#com搞#代!码网</div><strong>搞gaodaima代码</strong>",userw='".$uid."',sev='".$usetype."' where card='".$card."'");<br /> if (!$result)<br /> {<br /> echo "///0///";<br /> mysql_query("ROLLBACK"); <br /> return;<br /> }<br /> mysql_query("ROLLBACK");
刚学PHP,上面的代码执行后,按照个人的理解,应该两条两条语句都没能修改数据库,但是执行后去查看数据库,发现第一条确实没修改数据库,但是第二条语句去真实修改了,不知是不是我的代码有问题,如果是的话,希望高手们说下,代码应该怎样修改,才能让两条语句保持一致性,即要么都修改数据,要么都不修改
——解决方案——————–
mysql_query(“SET AUTOCOMMIT=0”); 先設置不自動commit
然後在成功的位置,加入 mysql_query(“COMMIT”);
<br /> mysql_query("BEGIN");?<br /> mysql_query("SET AUTOCOMMIT=0"); ?<br />?<br /> $result=mysql_query("UPDATE?vip?set?time='".$intime."'"."??where?user='".$uid."'?and?".?"setype='".$usetype."'");<br /> if?(!$result){<br />???? echo?"///0///";<br />???? mysql_query("ROLLBACK");?<br />???? return;<br />??? }<br />?<br /> $result=mysql_query("UPDATE?addcard?set?time=curdate()".",userw='".$uid."',sev='".$usetype."'??where?card='".$card."'");<br /> if (!$result){<br /> echo?"///0///";<br /> mysql_query("ROLLBACK");?<br /> return;<br />????}<br /> mysql_query("COMMIT");<br /><br />
——解决方案——————–
长连接也是一样的