0

我有一个名为table_music 这里的 MySQL 数据库,我存储艺术家、歌曲……这是我将从页面上的表单更新的内容。

现在我也想在这个表格中添加流派,所以我做了一个表格,叫做song_genre Here I have song_genre_id, song_id,genre_id

在我的表单中,我列出了我的歌曲标题,table_music 然后我有可以更新作曲家、长度、年份等的字段。我的表格中还有一个名为流派的复选框列表song_genre,所有流派都按字母顺序排序。我将这些放在不同的表中,因为我以后可能想添加流派。

但我不知道如何将这些选中的类型插入我的song_genre表中。我以前从未使用过数组,所以我在这里迷路了。

首先,我想要UPDATE我的table_music,而且效果很好。然后我想要INSERT INTO我的新表 ( song_genre),所以我song_id在这里得到了流派和。

我认为这是正确的做法,所以我可以在以后更改流派,或者如果有一天我也需要,我可以添加或删除一种流派。

我尝试了以下方法:但它似乎不起作用:

foreach(echo $row_rs_genres['genre_id'] as $checked_value)
{
   $query = "INSERT INTO song_genre (genre_id, song_id) VALUES ('$checked_value',    $_POST['song_id'])"; 
   $result = mysql_query($query) or die ("Unable to execute query: " . mysql_error());

}

4

2 回答 2

1

删除echo

foreach($row_rs_genres['genre_id'] as $checked_value)

你需要$_POST用大括号括起来:

"INSERT INTO song_genre (genre_id, song_id) VALUES ('$checked_value', {$_POST['song_id']})"

或者跳出字符串:

"INSERT INTO song_genre (genre_id, song_id) VALUES ('" . $checked_value . "', " . $_POST['song_id'] . ")"

尽管您在这里很容易受到SQL 注入的影响。您应该转义您的输入或切换到准备好的语句

于 2013-03-30T17:59:21.630 回答
0

首先,就表结构而言,您应该为您的流派提供一个表,该表只存储genre_id 和genre_name(以及您可能需要的任何其他数据)。然后创建一个单独的表来进行查找。该表将只有 song_id、genre_id,在两个字段上都有唯一索引。

其次,当您从公共表单捕获数据并插入数据库时​​,请确保您首先清理数据以防止 SQL 注入等。例如,如果您知道某个数据值只能是数字,则在尝试使用数据之前通过使用 intval() 函数来强制执行。

如果您还没有,请阅读关于不在新代码中使用 mysql_* 函数的信息。它们不再被维护并被正式弃用 。了解一下,并使用PDOMySQLi本文将帮助您决定使用哪一个。如果你选择 PDO,这里有一个很好的教程

于 2013-03-30T18:02:41.023 回答