簡體   English   中英

用每個數據更新兩個mysql表

[英]update two mysql tables with data from each

最初,我有一個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分為圖像和視頻。

然后,我可以為每個表運行查詢。 是否有更好的方法可以解決這個問題,也許在一個查詢中?

我不知道完整的表格結構,所以這可能會或可能不會。 但是...為什么不使用一個名為“ media”(或任何您想要的表)的表,並添加一個索引的“ type”列。 然后,您可以讓您的表單具有一個帶有自動增量ID值的復選框,並且它們都對該表有效。 您可以通過單個查詢對兩個視頻/圖像進行更新查詢,而您的選擇僅需要WHERE中的其他條件,即“ type ='video'”或“ type ='image'”

無需在一個查詢中執行此操作。 我認為您不會因此獲得任何重大優勢。 我認為您要做的只是一個干凈,更高效的查詢。 使用兩個查詢從兩個表中刪除列表並不是一個壞設計。

這個相關問題可能會對您有所幫助。 MySql一次更新兩個表

更新查詢針對單個表運行,因此我認為您不能一次更新兩個表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM