<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 本段是与文章内容无关的部分</span></span><span>
</span><span><span class="hljs-comment">// 例如可以是作者信息、版权声明或加载某些配置</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-variable">$author</span></span><span> = </span><span><span class="hljs-string">"数据库事务研究小组"</span></span><span>;
</span><span><span class="hljs-variable">$publish_date</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>如何正确使用 mysqli::</span><span><span class="hljs-variable constant_">begin_transaction</span></span><span> 来实现数据库事务控制?</h1>
<p>在使用 MySQL 数据库进行开发时,事务控制是保障数据一致性与完整性的重要手段。PHP 的 <code>mysqli
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'user'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>, </span><span><span class="hljs-string">'testdb'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_errno) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'连接失败: '</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-comment">// 显式开启事务</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">begin_transaction</span></span><span>();
</span><span><span class="hljs-comment">// 执行多条相关的 SQL 语句</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"UPDATE accounts SET balance = balance - 100 WHERE id = 1"</span></span><span>);
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"UPDATE accounts SET balance = balance + 100 WHERE id = 2"</span></span><span>);
</span><span><span class="hljs-comment">// 提交事务</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">commit</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"转账成功"</span></span><span>;
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-comment">// 出错时回滚</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">rollback</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"转账失败: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
使用 mysqli::begin_transaction 能让 PHP 开发者更直观、可控地管理事务流程。在实际项目中,务必在执行多条逻辑相关的数据库操作时使用事务,并做好错误处理与回滚逻辑,从而保证数据的一致性与安全性。
相关标签:
mysqli