最初我有一个 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/