ホームページ  >  記事  >  バックエンド開発  >  MYSQL に関する質問

MYSQL に関する質問

WBOY
WBOYオリジナル
2016-06-13 12:01:25707ブラウズ

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");


上記のコードを実行した後、私の個人的な理解によれば、どちらのステートメントもデータベースを変更できないはずですが、実行後に確認します。最初のステートメントはデータベースを変更していないことがわかりましたが、実際にはコードに問題があるのではないかと思います。その場合は、専門家にコードを変更する方法を教えていただければ幸いです。 2 つのステートメントの一貫性を維持します。つまり、すべてのデータが変更されるか、データが変更されないかのいずれかです。
------解決策------ ---
mysql_query("SET AUTOCOMMIT=0"); まず自動的にコミットしないように設定します

次に 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 />
を追加します
------解決策------------------
長い接続の場合も同様です

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。