如何从具有相同名称的texbox添加多个值?

时间:2016-07-26 06:00:24

标签: php mysql

我试图找到一个解决方案,使用相同的文本框名称在我的数据库中添加多个值,但我不能。我不确切知道是否有解决方案 请参阅以下代码。

<form action="" method="post">
                        <?php
                        if(isset($_POST['pats'])){
                            $pats = $_POST['pats'];
                            mysql_query("INSERT INTO trainings(pats) VALUES ('$pats')") or die(mysql_error());
                        }
                        ?>
                        <input type="text" name="pats" placeholder="Pats">
                        <input type="text" name="pats" placeholder="Pats">
                        <input type="text" name="pats" placeholder="Pats">
                        <input type="text" name="pats" placeholder="Pats">
                        <input type="text" name="pats" placeholder="Pats">
                        <input type="submit" name="insert" value="Add">
                </form>

4 个答案:

答案 0 :(得分:0)

&lt; p&gt;试试这样&lt; / p&gt; &lt; pre&gt;&lt; code&gt;&lt; form action =&#34;&#34;方法=&#34;后&#34;&GT;      &LT; PHP        如果(isset($ _ POST [&#39;拍&#39;])){          foreach($ _ POST [&#39; pats&#39;] as $ pat){            mysql_query(&#34; INSERT INTO trainings(pats)VALUES(&#39; $ pat&#39;)&#34;)或die(mysql_error());          }        }      ?&GT;                     &lt; input type =&#34; text&#34;命名=&#34;拍[]&#34;占位符=&#34;轻拍&#34;&GT;                     &lt; input type =&#34; text&#34;命名=&#34;拍[]&#34;占位符=&#34;轻拍&#34;&GT;                     &lt; input type =&#34; text&#34;命名=&#34;拍[]&#34;占位符=&#34;轻拍&#34;&GT;                     &lt; input type =&#34; text&#34;命名=&#34;拍[]&#34;占位符=&#34;轻拍&#34;&GT;                     &lt; input type =&#34; text&#34;命名=&#34;拍[]&#34;占位符=&#34;轻拍&#34;&GT;                     &lt;输入类型=&#34;提交&#34;命名=&#34;插入&#34;值=&#34;添加&#34;&GT;             &LT; /形式&GT; &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;它会将输入中的每个值保存为db中的单独行。&lt; / p&gt;

答案 1 :(得分:0)

将[]添加到输入元素的name属性中,然后它们将作为数组发送到服务器。

如果您想在不同的行中添加值:

在你的后端,你可以迭代你收到的数组,检查相应的键上是否有实际值并将其插入数据库。

我添加了mysql_real_escape_string(),但您不应该使用此代码,因为它仍然容易受到sql注入攻击。请参阅此答案:https://stackoverflow.com/a/60496/3595565

<form action="" method="post">
        <?php
        if(isset($_POST['pats'])){
            foreach ($_POST['pats'] as $pats) {
                if(!empty($pats)){
                    mysql_query("INSERT INTO trainings(pats) VALUES ('" . mysql_real_escape_string($pats) . "')") or die(mysql_error());
                }
            }
        }
        ?>
        <input type="text" name="pats[]" placeholder="Pats">
        <input type="text" name="pats[]" placeholder="Pats">
        <input type="text" name="pats[]" placeholder="Pats">
        <input type="text" name="pats[]" placeholder="Pats">
        <input type="text" name="pats[]" placeholder="Pats">
        <input type="submit" name="insert" value="Add">
</form>

答案 2 :(得分:-1)

使用您的输入元素名称

<form action="" method="post">
<input type="text" name="pats[]" placeholder="Pats">
<input type="text" name="pats[]" placeholder="Pats">
<input type="text" name="pats[]" placeholder="Pats">
<input type="text" name="pats[]" placeholder="Pats">
<input type="text" name="pats[]" placeholder="Pats">
<input type="submit" name="insert" value="Add"> 
</form>

答案 3 :(得分:-1)

在你的html中,你可以传入一个名为..

的数组
<input type="text" name="pats[]" placeholder="Pats">
<input type="text" name="pats[]" placeholder="Pats">
<input type="text" name="pats[]" placeholder="Pats">
<input type="text" name="pats[]" placeholder="Pats">

注意名称中的[],这些被称为HTML输入数组。这样php就会收到一组pats ..

<?php
    if (isset($_POST['pats'])) {
        implode(',',$pats = $_POST['pats']);
        mysql_query("INSERT INTO trainings(pats) VALUES ('$pats')") or die(mysql_error());
    }
?>

您可以使用implode()函数将数组转换为带分隔符的单个字符串