php - 使用每个表中的数据更新两个 mysql 表

标签 php mysql

最初我有一个 mysql 视频表,它在一个简单的 html 表中向用户显示。他们可以选择一个或多个复选框 ($video_list) 以通过查询标记为删除(实际上并不删除,而是更新记录)

//store all video names in array
    foreach ($video_list as $element) {
        $deleteNames[] = $db->quote($element);
    }

//create nice comma separated list for query
$deleteNames = implode(',', $deleteNames);

// query used
$query_delete_video = sprintf('UPDATE `videos` SET deleted_datetime=NOW() WHERE `video_name` IN (%s)', $deleteNames);

现在的问题是这个 html 表现在也有图像,而不仅仅是视频。这些图像位于名为 images 的单独表中。用户可以同时选择多个视频或图像,也可以仅选择多个视频或图像进行删除。

所以现在列表 $deleteNames 可能包含视频和图像名称的组合。

仅对图像的查询如下所示:

$query_delete_image = sprintf('UPDATE `images` SET deleted_datetime=NOW() WHERE `image_name` IN (%s)', $deleteNames);

同样的事情只是在不同的表和不同的列名中。我能想到的这两个查询的唯一方法是通过解析扩展名或其他内容将 $deleteNames 分成图像和视频。

然后我可以对每个表运行查询。有没有更好的方法来解决这个问题,也许在一个查询中?

最佳答案

无需在一个查询中执行此操作。我认为你不会因此获得任何显着的优势。我认为您想要做的只是一个干净、更高效的查询。使用两个查询从两个表中删除列表并不是一个糟糕的设计。

这个相关问题可能会对您有所帮助。 MySql update two tables at once

更新查询针对单个表运行,因此我认为您无法一次性更新两个表。

关于php - 使用每个表中的数据更新两个 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17498660/

相关文章:

mysql - 删除重复的记录,除了一个连接三张表

mysql - SQL查询GROUP BY,返回符合LEAST、COALESCE条件的分组

mysql - 更改 SQL 查询中行的顺序

php - Wordpress - 为通讯作者添加两个 Adsense 帐户

php - 螳螂 - Integrate Wiki

php - wordpress fatal error : Out of memory

javascript - 将mysql数据库的php查询搜索限制为非空行

php - 从表中选择日期并使用 php 以不同格式显示它

php - UTF-8贯穿始终

php - Plastic/Elasticsearch-搜索具有空值的条目