Home  >  Article  >  Backend Development  >  关于MYSQL事宜的疑问

关于MYSQL事宜的疑问

WBOY
WBOYOriginal
2016-06-13 12:01:25709browse

关于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()".",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 />

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn