2013-01-25 87 views
1

行我有新表數據庫來跟蹤標籤,就像這樣:MYSQL添加舊列在新表中

TAG NAME | IMAGE ID 

    funny  570 
    funny  571 
    dog   649 

,我已經老了表來跟蹤標籤,就像這樣:

TAG ID | TAG NAME | IMAGES IDS 

11  funny  570,571,572,573,574,575,576,577,578,579,580,581,58... 
12  dog   649,650,651,652,653,654,655,656,657,658,659,660,66... 
13  cat   844,845,846,847,848,849,850,851,852,853,854,855,85... 

我需要添加所有舊的圖像ID /關聯標籤到新表

+0

是否有關於可與標籤相關聯的ID數量的任何限制?也許,使用PHP代替編寫SQL查詢來做同樣的事情似乎更容易。 – Srinivas

+0

php?你的意思是獲取圖像ID並在數組中循環,插入每一個? – bushdiver

+1

是的。檢查[這](http://stackoverflow.com/questions/1096679/can-mysql-split-a-column),MySQL不提供分離標籤所需的開箱即用功能。 – Srinivas

回答

1

如果我沒有錯,你想添加舊的表記錄到新表。

所以你需要做的就是查詢舊錶,並通過分解字符串展開imgid並循環,並將其添加到新表中。

示例代碼。

<?php 

    $query = mysqli_query("SELECT * FROM oldTable")or die(mysqli_error()); 
    while($row = mysql_fetch_assoc($query)) 
    { 
     $ids = explode(",",$row['imageID']); 

     foreach($ids as $newImgId) 
     { 
      $Insert_query = mysqli_query("INSERT INTO NEWTABLE ('tagname','img_id') VALUES ('".$row['tag']."','".$newImgId."')")or die(mysqli_error()); 
     } 
    } 
1

您必須抓取每一行並循環並插入,如下所示。

  1. 從數據庫中提取第1行。使用explode將圖像ID分解爲數組。

  2. 循環遍歷爆炸陣列並將它們插入相應的標記名稱。

    的foreach()

    {

    //這個循環與照顧的記錄

    //循環,直至記錄結束

    //這裏爆炸

    的foreach ()

    {

    //循環通過並插入分解陣列數據庫

    }

    }