PHP 原生连接 Mysql,mysql排它锁之行锁
warning:
这篇文章距离上次修改已过186天,其中的内容可能已经有所变动。
在PHP中使用原生的SQL语句连接MySQL数据库,并实现行锁(排它锁),可以通过执行SQL语句中的SELECT ... FOR UPDATE进行。以下是一个示例代码:
<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_dbname";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 设置字符集
$conn->set_charset("utf8");
// SQL查询,使用FOR UPDATE进行行锁
$sql = "SELECT * FROM your_table WHERE condition_column = 'some_value' FOR UPDATE";
// 执行查询
if ($result = $conn->query($sql)) {
if ($result->num_rows > 0) {
// 有记录,对记录进行你需要的操作
// ...
} else {
echo "0 结果";
}
$result->close();
} else {
echo "查询错误: " . $conn->error;
}
// 关闭连接
$conn->close();
?>
在这个例子中,你需要替换$servername
、$username
、$password
和$dbname
为你的数据库连接信息,your_table
为你要查询的表名,condition_column
为你的查询条件列,some_value
为查询条件的值。
当执行带有FOR UPDATE的SELECT语句时,MySQL会对返回的所有行加排它锁,其他会话在执行更新或删除这些行的操作时会被阻塞,直到排它锁被释放。这确保了在同一时间只有一个事务能够更新这些行。
评论已关闭