将多个值从表单插入到数组

Posted

技术标签:

【中文标题】将多个值从表单插入到数组【英文标题】:Inserting multiple values from a form to an array 【发布时间】:2020-05-10 07:28:37 【问题描述】:

我有一个包含多个字段的表单:

<input type="text" name="name[]" value="">
<input type="text" name="name[]" value="">
<input type="text" name="name[]" value="">

我正在尝试将该表单和这些值插入到数据库中的数组中:

<?php 

$i = 0;
foreach ($_POST as $val) 
    $name = $_POST['name'][$i];

    mysqli_query("INSERT INTO main (name) VALUES ('$name')");
    $i++;
   
?>

这给了我错误“mysqli_query() 需要至少 2 个参数,1 个给定”

我也尝试将查询替换为:

mysqli_query($connect, "UPDATE main
SET name='$name'
WHERE id=2");

但我认为这实际上并不是将 3 个 name 值发布到数组中。相反,它只发布一个。

我尝试使用在此网站上找到的多个代码,但我仍然无法弄清楚!

【问题讨论】:

您确实需要将$connect 添加到您对mysqli_query 的第一次调用中,但为什么您将WHERE 条件添加到您的第二次调用中? @Nick 我有两行 id=1 和 id=2。我认为如果我要指定一个 id,它会将其作为数组插入一行。我知道这可能是错误的;) 【参考方案1】:

你正在循环通过$_POST,没有必要这样做,尝试循环通过$_POST['name'],像这样:

如果呈现表单的文件与接收帖子的文件相同,则您必须先验证是否已发布帖子,然后再尝试遍历 'name'

if(array_key_exists('name', $_POST)
  foreach($_POST['name'] as $name)
    mysqli_query($connect, "INSERT INTO main (name) VALUES 
  ('$name')");
  

【讨论】:

嘿阿尔贝托,所以我实际上之前尝试过做类似的事情,但它给了我这个错误:“注意:未定义的索引:名称”和这个“警告:为 foreach() 提供的参数无效” .干杯。 更改了答案,因为我怀疑您可能使用相同的文件/url 来呈现表单并处理插入。请确认是否是这种情况【参考方案2】:

试试这个:

mysqli_query($connect, "INSERT INTO main (name) VALUES ('".$name."')");

这里$connect 是您的数据库连接。您需要在代码的前面某处指定此连接。

【讨论】:

以上是关于将多个值从表单插入到数组的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历一组动态表单输入并将它们插入到多个表中?

通过表单将数据从一个表插入到另一个表

使用 Web 表单将数据插入到多个表中

Angular - 在 Zeppelin 中将动态表单内容插入数据库

PHP 表单使用动态输入插入数据数组

Pentaho 数据集成 (PDI):将布尔值从源插入到目标