2014-01-05 66 views
0

基本上,我需要根據圖像1中的tab_id和圖像2(連接)中的id選擇圖像1中的submitted_link行。選擇這個之後,我需要更新圖像2中tab_content行的每一個id在圖像2中。圖像下面是我現在有明智的代碼。使用連接選擇行然後更新mysql表

圖片1:

Database Help http://bekustom.com/Untitled-1.jpg

圖片2:

Database Help http://bekustom.com/Untitled-2.jpg

我的代碼:

$sql = ("SELECT submitted_links.submitted_link, submitted_links.tab_id, users_tabs.id FROM users_tabs, submitted_links WHERE submitted_links.tab_id=users_tabs.id AND submitted_links.user_id=users_tabs.user_id"); 

$result = mysqli_query($db, $sql); 
while($row = $result->fetch_array()) { 
$rows[] = $row; 
} 

foreach($rows as $row) { 
$tab_content[] = $row['submitted_link']; 
$tab_id = $row['tab_id']; 

$tab_implode = implode(",", $tab_content); 
$sql2 = ("UPDATE users_tabs SET tab_content='".$tab_implode."' WHERE id='".$tab_id."'"); 
$result2 = $db->query($sql2); 
} 

什麼我得到的tab_content目前:

在tab_content
ID 17: http://google.com,http://twitter.com,http://google2.com 
ID 18: http://google.com,http://twitter.com 

所需數據:

ID 17: http://google.com,http://google2.com 
ID 18: http://twitter.com 
+0

你做了什麼?更新不起作用? –

+0

關於你想要的數據庫的最終狀態可以更清楚一些嗎? – Manu

+0

爲什麼不能在while循環中移動你的更新查詢? –

回答

1

你需要改變你的PHP代碼!

嘗試......

$sql = "SELECT 
submitted_links.submitted_link, 
submitted_links.tab_id, 
users_tabs.id, 
GROUP_CONCAT(submitted_link) AS all_links 
FROM 
users_tabs, submitted_links 
WHERE 
submitted_links.tab_id = users_tabs.id 
AND submitted_links.user_id=users_tabs.user_id 
GROUP BY submitted_links.tab_id"; 

$result = mysqli_query($db, $sql); 
while($row = $result->fetch_array()) 
{ 
    $sql2 = "UPDATE 
      users_tabs 
      SET 
      tab_content='" . $row['all_links'] . "' 
      WHERE id='" . $row["tab_id"] . "'"; 

    $result2 = $db->query($sql2); 
} 
+0

未報告錯誤,但未更新tab_content列。 – BeKustom

+0

它在邏輯上看起來是正確的...嘗試調試並查看問題出在哪裏! – Manu

+0

檢查第一個查詢的輸出是什麼。之後,檢查循環中的echo $ sql2'! – Manu

0

試着在你的MySQL環境此查詢。如果是工作,那麼沒有必要的whileforeach循環

UPDATE users_tabs AS c 
    join (SELECT o.tab_id, GROUP_CONCAT(o.submitted_links SEPARATOR ',') as 'links' 
    FROM submitted_links AS o GROUP BY o.tab_id) as mysub_tab 
    on c.id= mysub_tab.tab_id 
     SET c.tab_content = mysub_tab.links 
+0

MySQL發出此錯誤:您無法在FROM子句中指定目標表'c'進行更新 – BeKustom

+0

這看起來像是更新select的語法。嘗試內部連接,如下面的問題所示:http://stackoverflow.com/questions/11247982/update-multiple-rows-using-select-statement –

+0

@BeKustom更新了我的答案。請檢查 –