2012-02-14 56 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