我已经尝试过寻找答案,但我仍然有点失落。
我有一个使用PHP / SQL存储音乐曲目详情的网站。 我想搜索/添加/编辑/删除tracktitle,album,composer,bpm,timesignature,duration,instrumentation,genre,keywords(description)。 到目前为止,我已经完成了一个只有三个表和一个查找表(轨道,作曲家,专辑)的测试版本,它似乎可以正常搜索。
表'track'(id,tracktitle) table'composer'(id,composername) 表'专辑'(id,albumtitle) 表'albumtrack(track.id,composer.id,album.id)
然而,在添加新曲目并为其指定作曲家和专辑时,我似乎无法正确获取插入位。 tracktitle可以进入轨道表,但如何在albumtrack查找表中链接它。
我需要一些额外的位吗?
$sql = "INSERT INTO track SET
track.tracktitle='$tracktitle' ";
另外......我是否以正确的方式使用每个位表(bpm表,持续时间表,流派表)?
一个曲目可能有多个持续时间(不同的编辑),bpms,时间签名,因此将共享大量数据。 我还希望用户能够搜索一系列持续时间或bpm,例如2到3分钟之间的曲目。
在扩展我的测试版本之前,我需要一些建议,看看我是否这样做是最好的方法。
由于
答案 0 :(得分:0)
假设“id”字段是自动递增值(数据库正在为您生成它们),那么在插入轨道后,您必须恢复刚刚添加的行的ID(使用mysql_insert_id()
)。然后,您可以使用该ID以及专辑和作曲家ID来INSERT到专辑轨道。
此外,您应该知道您使用的INSERT语法是特定于MySQL的。如果你从不考虑切换数据库,这很好,但你也可能想要学习“标准”INSERT语法(INSERT INTO tablename (col1, col2. . .) VALUES (val1, val2. . .)
)。
答案 1 :(得分:0)
您的INSERT查询应该是:
$sql = "INSERT INTO track VALUES('','$tracktitle','$duration','$etc')";
自动递增ID的第一个值为空。
“另外......我是否以正确的方式使用每个位表(bpm表,持续时间表,流派表)?”
你能不能只有一个包含多个字段的表(bbm,持续时间等)。
希望这有帮助。