php - 使用单个查询更新多行

标签 php mysql sql database

我的数据库中有一个名为 posts 的表,其中有一列名为 has_read。然后我有一组帖子 ID,如下所示:

$posts = array(1, 5, 29, 38, 50, 51, 52, 65, 79);

我想要做的是对数组中的所有这些帖子,更新它们的行以将用户 ID 添加到 has_read。我不能使用 foreach 循环,因为它会执行 9 个查询,我认为这太多了。

最佳答案

$updatestring = implode(",",$posts = array(1, 5, 29, 38, 50, 51, 52, 65, 79))

$sql = "UPDATE post SET has_read=1 WHERE userID IN($updatestring)";

将您的 id 数组连接到逗号分隔的字符串,然后使用 IN() 函数进行批量更新

虽然实际上仔细想想这是完全错误的做法。由于它是一个线程与许多用户的关系,因此您最好为此拥有一个规范化的数据库,并使用一个单独的表来跟踪基于用户 ID 和线程 ID 的读取。

关于php - 使用单个查询更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20564742/

相关文章:

php - 具有多个 COUNT() 的多个 LEFT JOINS

javascript - 从文本框中获取值并作为建议传递到下一个文本框

php - 如何: migration many-to-many laravel artisan

sql - 三重连接查询中的语法错误

php - 以一种形式处理 42 个复选框

php - 更新语句不在 while 循环内执行

php - 将 mysql 结果存储在 SESSION 数组中以供以后使用(通过 in_array 检查)

mysql - 更改工作台中主键的默认名称

sql - 如何在 find() 函数中添加条件?

sql - 在oracle表中自动更改状态