使用join选择行然后更新mysql表

时间:2014-01-05 13:37:09

标签: php mysql join

好吧基本上我需要根据图像1中的tab_id和图像2中的id(连接)选择图像1中的submitted_link行。选择此项后,我需要为图像2中的每个id更新图像2中的tab_content行。图像下方是我现在的代码。

图片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中获得了什么:

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

tab_content中的所需数据:

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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
相关问题