我的数据库中有一个名为 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/