关于MYSQL事宜的疑问

php中文网
发布: 2016-06-13 12:01:25
原创
815人浏览过

关于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 />
登录后复制

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

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号