当前位置: 代码迷 >> PHP >> 关于MYSQL事宜的疑问
  详细解决方案

关于MYSQL事宜的疑问

热度:211   发布时间:2016-04-28 18:57:03.0
关于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");


------解决方案--------------------
长连接也是一样的
  相关解决方案