【发布时间】:2020-04-17 23:27:25
【问题描述】:
我有以下疑问:
$query = "UPDATE list SET locked=1, @id:=id WHERE worked=0 and is404=0 AND error=0 AND locked=0 LIMIT 1;SELECT * FROM list WHERE id=@id;";
$stmt = $pdo->prepare($query);
if ($stmt->execute()) {
$model = $stmt->fetch(PDO::FETCH_OBJ);
if ( isset($model) && !isset($model->id) ) {
echo json_encode(array('error' => -1, 'type' => 'No URL'));
exit;
}
}
我想要完成的是使用其中一个名为“locked”的字段来锁定一行,从而避免其他并行进程干扰它们。
如果我在控制台中运行查询,它可以正常工作并通过 UPDATE 中使用的@id 返回锁定的行。
在 php 中使用 PDO 时出现问题。该行被锁定,但 SELECT 语句不返回任何内容。
我的代码有什么问题?
【问题讨论】: