2012-02-14 59 views
2

enter image description hereMysql的數據插入到多個表從陣列

Tags array(11) { 
    ["album"] => string(17) "Away From The Sun" 
    ["artist"] => string(12) "3 Doors Down" 
    ["bitrate"] => int(256000) 
    ["title"] => string(16) "Ticket to Heaven" 
    ["filename"] => string(23) "04 Ticket To Heaven.mp3" 
    ["format"] => string(3) "mp3" 
    ["play_time"] => float(207.5950625) 
    ["genre"] => string(11) "Alternative" 
    ["year"] => string(4) "2002" 
    ["track"] => string(1) "4" 
    ["art"] => string(21) "Away From The Sun.jpg" 
} 

我需要從這個數組獲取數據和填充這些表中的數據和維持關係有所幫助。
我始終從這些表中提取數據,並使用已知數據構建它們。
在這種情況下,數據對我來說是不可知的,直到我解析id3標籤。
所有3個表都在'id'上自動遞增。
我通常在Zend Framework中工作,所以ZF中的答案確實有用,但php和sql幾乎一樣好。
我發現了一個似乎解決此問題的問題SQL Insert with data from multiple tables,但我沒有sql來理解答案。
鏈接表有幫助嗎?

P.S.我知道圖中的關係線是不正確的。

回答

1

由於關係取決於自動增量ID,所以最好的方法是插入到藝術家表中,然後致電$artist_id = mysql_insert_id()以獲取新的ID號。然後你可以插入相冊並調用與$album_id = mysql_insert_id()`相同的功能。最後使用您剛纔檢索的ID插入曲目。

您可以確保沒有沒有藝術家的專輯或沒有專輯的曲目,並且您需要插入專輯和曲目而無需創建新的藝術家或專輯,因此這應該足夠了。

+0

我希望有更優雅的東西,然後只是級聯查詢。 – RockyFord 2012-02-14 13:55:35

+0

優雅不是通過過度複雜化你想要做的事來實現的。一位藝術家會擁有很多專輯,而一張專輯會有很多曲目,所以大多數時候您不會在這些表格中添加新的行。考慮一下什麼能讓你的代碼最容易理解。 – Ilion 2012-02-14 16:11:15