【问题标题】:MYSQL/PHP: Inserting data via HTML form, same "input name"MYSQL/PHP:通过 HTML 表单插入数据,相同的“输入名称”
【发布时间】:2023-03-19 02:17:02
【问题描述】:

我是 MySQL 新手,作为一个学习项目,我想创建一个食谱数据库。我希望用户能够通过一个简单的 HTML 表单输入成分,但我不知道如何标记表单,以便我可以一次将多个成分输入数据库。

我想做这样的事情:

<form method="post" action="insert.php">
Ingredient 1: <input type="text" name="ingredient"><br />
Ingredient 2: <input type="text" name="ingredient"><br />
Ingredient 3: <input type="text" name="ingredient"><br />
<input type="submit" value="Submit">
</form>

当我这样做时,我向表中添加了行,但它们都是空的。我知道这与我在表单中多次使用“成分”(我要添加成分名称的表值)有关,但我不知道如何解决。

我非常希望能提供一些关于如何使其发挥作用的意见。

【问题讨论】:

    标签: php html mysql forms


    【解决方案1】:

    像这样写

    Ingredient 1: <input type="text" name="ingredient[]"><br />
    Ingredient 2: <input type="text" name="ingredient[]"><br />
    

    当你在 php 中得到 REQUEST 数组时,你实际上会 获取名称数组

    喜欢

    $ing = $_POST['ingredient']; // $ing will be indexed array
    

    【讨论】:

    • 嗯。谢谢你快速的回复!我将如何配置我的 PHP 页面以将其发送到数据库以使其正常工作?现在 INSERT 部分看起来像这样:$name = mysqli_real_escape_string($con, $_POST['ingredient']); $sql="INSERT INTO ingredient (ingredient) VALUES ('$ingredient'), ('$ingredient'), ('$ingredient');";
    • 你应该为 $_POST['ingredient'] 运行一个循环。 b/c 它将是一个数组。并在循环中编写您的查询。
    【解决方案2】:

    您不能像以前那样为多个文本框使用相同的名称。最后一个输入框的值将覆盖所有其他输入框的值,因为它们具有相同的名称。您必须为每个输入文本使用不同的名称,或者将名称定义为数组,如:

    Ingredient 1: <input type="text" name="ingredient[]"><br />
    Ingredient 2: <input type="text" name="ingredient[]"><br />
    Ingredient 3: <input type="text" name="ingredient[]"><br />
    

    所以$_REQUEST['ingredient']$_POST['ingredient'] 将是一个普通的PHP 数组,您可以从中获取每个文本框的值,例如$_REQUEST['ingredient'][x],其中x 是某个整数索引,只要count($_REQUEST['addCart']) &gt; x 就有效。

    【讨论】:

      【解决方案3】:

      工作代码:

      index.html

      <!DOCTYPE html>
      <html>
      <head>
      <title> Recipes </title>
      </head>
      <body>
      <form method="post" action="register.php">
      Ingredient 1 : <input type="text" name="ing1"/><br/>
      Ingredient 2 : <input type="text" name="ing2"/><br/>
      Ingredient 3 : <input type="text" name="ing3"/><br/><br/>
      <input type="submit" value="Enter" name="submit"/>
      </form>
      </body>
      </html>
      

      注册.php

      <?php
      
      // coding to check database connection
      $connection = mysqli_connect('localhost','root','adm','recipe');
      
      /*
      root -  username
      adm -  passowrd
      recipe - database name
      */
      
      //checking whether submit button is clicked or not
      
      if(isset($_POST['submit'])) 
      {
         // Escaping special char & getting the values we entered in form through POST method
         $ing1 = mysqli_real_escape_string($connection,$_POST['ing1']);
         $ing2 = mysqli_real_escape_string($connection,$_POST['ing2']);
         $ing3 = mysqli_real_escape_string($connection,$_POST['ing3']);
      
            //data is table name
      
            $query = "INSERT into data VALUES('','$ing1','$ing2','$ing3')";
            $result = mysqli_query($connection,$query);
          echo "<p>Successfully Entered</p>"; 
          ?>
      
         <a href="index.html"> Click here to go to home </a>
      
      <?
          }
      ?>
      

      创建一个数据库并将其命名为recipe,并将一个表命名为data。表data结构:

      输出:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-20
        • 2018-07-30
        • 1970-01-01
        • 2016-02-16
        • 1970-01-01
        • 2017-05-14
        • 2013-03-15
        • 1970-01-01
        相关资源
        最近更新 更多