Php 如何向多个MySQL行插入表单值,其中一些具有相同的名称

Php 如何向多个MySQL行插入表单值,其中一些具有相同的名称,php,mysql,mysqli,Php,Mysql,Mysqli,在过去的几个小时里,我一直在搜索这个问题,有一些非常相似的问题和答案,但没有一个对我的情况有效。我试图做的是插入一个歌曲列表,设置为两列的相同值,每行一个,并通过单选按钮设置两个选项。这就是为什么我不能把所有的歌曲都写在一个文本区里,然后把它们分开的原因 这就是表单的外观(显然没有完全设计) 当我让它工作时,现在只有三个,实际上通过javascript可以添加无限量 以及守则: <form action="" method="post"> <label>

在过去的几个小时里,我一直在搜索这个问题,有一些非常相似的问题和答案,但没有一个对我的情况有效。我试图做的是插入一个歌曲列表,设置为两列的相同值,每行一个,并通过单选按钮设置两个选项。这就是为什么我不能把所有的歌曲都写在一个文本区里,然后把它们分开的原因

这就是表单的外观(显然没有完全设计)

当我让它工作时,现在只有三个,实际上通过javascript可以添加无限量

以及守则:

<form action="" method="post">
        <label>Session ID</label>
        <input type="text" name="session-id"><br>
        <label>Songs</label><br>
        <input type="text" name="song-key[]"><input type="checkbox" name="is-partial[]"><input type="checkbox" name="is-jam[]"><br>
        <input type="text" name="song-key[]"><input type="checkbox" name="is-partial[]"><input type="checkbox" name="is-jam[]"><br>
        <input type="text" name="song-key[]"><input type="checkbox" name="is-partial[]"><input type="checkbox" name="is-jam[]"><br>
        <input type="text" name="update-date" value="<?php echo date(" Y-m-d H:i:s ");?>" hidden readonly><br>
        <input type="submit" name="submit" value="Submit">
    </form>

会话ID

歌曲




如果更改输入名称,可以获得更有用的
$\u POST
数组

<input type="text" name="songs[0][key]">
<input type="checkbox" name="songs[0][is-partial]">
<input type="checkbox" name="songs[0][is-jam]"><br>

<input type="text" name="songs[1][key]">
<input type="checkbox" name="songs[1][is-partial]">
<input type="checkbox" name="songs[1][is-jam]"><br>

<input type="text" name="songs[2][key]">
<input type="checkbox" name="songs[2][is-partial]">
<input type="checkbox" name="songs[2][is-jam]"><br>
当前只获取最后一个值的原因是,您在循环中定义SQL字符串,但如果不在循环中执行语句,则只能从循环的最后一次迭代中获取值。将查询执行移到循环中,应该会得到所有三行


*如果更改输入名称,除非它们都被选中,否则可以得到更有用的
$\u POST
数组

<input type="text" name="songs[0][key]">
<input type="checkbox" name="songs[0][is-partial]">
<input type="checkbox" name="songs[0][is-jam]"><br>

<input type="text" name="songs[1][key]">
<input type="checkbox" name="songs[1][is-partial]">
<input type="checkbox" name="songs[1][is-jam]"><br>

<input type="text" name="songs[2][key]">
<input type="checkbox" name="songs[2][is-partial]">
<input type="checkbox" name="songs[2][is-jam]"><br>
当前只获取最后一个值的原因是,您在循环中定义SQL字符串,但如果不在循环中执行语句,则只能从循环的最后一次迭代中获取值。将查询执行移到循环中,应该会得到所有三行


*除非它们都被选中

作为旁注,否则如果OP对复选框执行此操作,这是更改名称的要求,否则丢失的复选框将使其索引失去顺序……嗯,也许我对此不够明确。“如果你全部选中,可能不会”==它们会,但可能性有多大?;)谢谢你的回复,但我还是只收到一行。我是否需要更改有关插入的任何内容,除了将其放置在您留下注释的位置之外?您使用什么来执行SQL
mysqli_query
?作为旁注,如果OP对复选框执行此操作,则需要更改名称,否则丢失的复选框将使其索引失去顺序……嗯,也许我对此不够明确。“如果您全部选中,可能不会”==它们会,但可能性有多大?;)谢谢你的回复,但我还是只收到一行。我是否需要更改有关插入的任何内容,除了将其放置在您留下注释的位置之外?您使用什么来执行SQL<代码>mysqli_查询
foreach ($_POST['songs'] as $song) {
    $key = $song['key'];
    $partial = isset($song['is-partial']) ? 1 : 0;
    $jam = isset($song['is-jam']) ? 1 : 0;
    // do the insert inside the loop rather than just building the SQL
}