插入具有相似名称的多个字段

时间:2013-06-17 12:44:26

标签: php mysql

我有一个表单,我用来发送多个具有相似名称的字段,但使用方括号将它们作为数组发送,其中键为“id”。我能够使用foreach循环成功循环,但我的插入查询无法在db.any线索中进行任何更改,为什么?

以下是表单中的代码:

$artist = mysql_fetch_array($allartists);
$allmusic = get_music_for_artist($artist_id);
$id = $music['id'];

while ($music = mysql_fetch_array($allmusic)) {
    echo "<td class=\"td20 tdblue\">
        <input name=\"song_title[" . $id . "]\" type=\"text\" value=\"" . $music['song_title'] . "\" />
        </td>"; 
}

这是我的表单处理器上的代码

foreach ($_POST['song_title'] as $id => $song) {
    $query = "UPDATE music SET 
                song_title = '{$song}' 
                WHERE id = $id ";
    if (mysql_query($query, $connection)) {
        //Success
        header("Location: yourmusic.php?pid=3");
        exit;
    } else {
        //Display error message
        echo "update did not succeed";
        echo "<p>" . mysql_error() . "</p>";
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个。

同时注意安全性http://www.phptherightway.com/#data_filtering

foreach ($_POST['song_title'] as $id => $song) {
                    $id = (int) $id;
                    $song = mysql_real_escape_string($song);

                    $query = "UPDATE music SET 
                    song_title = '$song' 
                    WHERE id = $id LIMIT 1;";

                    if (mysql_query($query, $connection)) {
                    //Success
                    header("Location: yourmusic.php?pid=3");
                    exit;
                } else {
                    //Display error message
                    echo "update did not succeed";
                    echo "<p>" . mysql_error() . "</p>";
                }
            }