2012-02-14 24 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はほぼ同じです。
私はこの問題に対処していると思われる1つの質問SQL Insert with data from multiple tablesを見つけましたが、答えを理解するSQLはありません。
リンクテーブルは役に立ちますか?

P.私は、図の関係線が間違っていることを知っています。

答えて

1

関係は自動インクリメントIDに依存するので、アーティストテーブルに挿入してから$artist_id = mysql_insert_id()を呼び出して新しいID番号を取得するのが最もよい方法です。アルバムに挿入し、$album_id = mysql_insert_id() `と同じ関数を呼び出すことができます。最後に、取得したIDを使用してトラックを挿入します。

アーティストやアルバムがないトラックがないことを確実にすることができ、新しいアーティストやアルバムを作成せずにアルバムやトラックを挿入する必要があります。

+0

私はよりエレガントで、カスケードクエリを望んでいました。 – RockyFord

+0

あなたがしようとしていることを過度に複雑にすることによってエレガンスは達成されません。アーティストには多くのアルバムがあり、アルバムには多くのトラックが含まれるため、ほとんどの場合、これらのテーブルに新しい行を追加することはありません。あなたのコードを理解しやすくするために何ができるか考えてみてください。 – Ilion