Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 手动锁定单个表行_Php_Mysql - Fatal编程技术网

Php 手动锁定单个表行

Php 手动锁定单个表行,php,mysql,Php,Mysql,我以前在MySQL中锁定过整个表,但我需要做的是锁定特定的行。更具体地说,当我的PHP脚本执行时,我需要它锁定一个特定的行,这样它就不能被读取或写入,运行其余的代码,然后在完成时解锁该行 我知道我需要使用InnoDB来实现这一点,但我一直无法找到如何做到这一点。我不确定它是否需要事务,如果需要,如何使用它们进行行级锁定 更新 也许我把这个问题想错了。从我所做的阅读和提供的信息来看,InnoDB表在读/写时自动锁定行,这是我得到的。但我担心的是,我想通过睡眠在PHP代码中引入延迟。我希望对先前从中

我以前在MySQL中锁定过整个表,但我需要做的是锁定特定的行。更具体地说,当我的PHP脚本执行时,我需要它锁定一个特定的行,这样它就不能被读取或写入,运行其余的代码,然后在完成时解锁该行

我知道我需要使用InnoDB来实现这一点,但我一直无法找到如何做到这一点。我不确定它是否需要事务,如果需要,如何使用它们进行行级锁定

更新

也许我把这个问题想错了。从我所做的阅读和提供的信息来看,InnoDB表在读/写时自动锁定行,这是我得到的。但我担心的是,我想通过睡眠在PHP代码中引入延迟。我希望对先前从中读取的行的任何和所有读取尝试都被锁定,直到睡眠结束,脚本完成其其余功能

如果我只是跑:

$result = $mysqli->prepare('...');
$result->bind_param('...', $...);
$result->execute();
$result->bind_result($...);
$result->fetch();
sleep('15');
//More script execution
$result->close();
这会阻止其他MySQL查询在我关闭连接之前访问所选行吗?

MySQL只使用MyISAM表中的表级锁定。对于行级锁定,您需要切换到innoDB


请参阅说明mysql中锁功能的说明。

查看此so线程:@John对于行锁来说似乎非常复杂。我正在使用InnoDB,我在问题中提到了这一点。我的问题是,在使用SELECT…check内部锁定方法时,我不知道如何在一行上强制执行读/写锁定。我只看到了锁表的代码,这是我过去使用过的。在关于行锁定的部分中,它只提到了带有特定查询的行锁定,它没有显示任何类似于LOCK row table的内容,其中x=y使我相信我的做法是错误的。