如何更新选定的行?

时间:2019-07-08 14:51:16

标签: php mysqli

我正在使用PHP和mysqli选择5个随机行,而这很好,我还想在提取那些行的同时将所选行的状态更新为1。 我已经看到了许多类似问题的例子,但是找不到我可以使用的例子。感谢您的帮助。

$query= $mysqli->prepare("SELECT ID, Name, Age FROM table WHERE status=0 ORDER BY RAND() LIMIT 5");
$query->execute();
$query->bind_result($ID, $Name, $Age);

while ($query->fetch()) {
    echo "<h1>$Name</h1>";
    echo "<p>$Age</p>";
}

1 个答案:

答案 0 :(得分:1)

您可以运行一个单独的查询,并根据获取的ID在其中进行更新。将所有ID放入数组,然后使用准备好的语句在其中动态构建查询。

$ids = [];
$query = $mysqli->prepare("SELECT ID, Name, Age FROM table WHERE status=0 ORDER BY RAND() LIMIT 5");
$query->execute();
$query->bind_result($ID, $Name, $Age);

while ($query->fetch()) {
    $ids[] = $ID;
    echo "<h1>$Name</h1>";
    echo "<p>$Age</p>";
}
$query->close();

// Create query dynamically
$stmt = $mysqli->prepare("UPDATE table SET status=1 WHERE id IN (".implode(", ", array_fill(0, count($ids), "?")).")");
// Bind dynamic values 
$stmt->bind_param(str_repeat("i", count($ids)), ...$ids);
$stmt->execute();
$stmt->close();