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

3

我有一个表单,里面有多个类似这样的字段:

<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()至少需要两个参数,但只提供了1个参数”。

我也尝试使用以下查询语句进行替换:

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

但我认为这实际上没有将3个名称值发布到数组中。相反,它只发布了一个。

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


你确实需要在第一次调用 mysqli_query 时添加 $connect,但是为什么要在第二次调用中添加 WHERE 条件呢? - Nick
@Nick,我有两行id分别为1和2。我认为如果我要指定一个id,它会将其插入到一行中作为数组。我知道这可能是错误的方式 ;) - Sebastian Walach
2个回答

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()提供了无效参数”。干杯。 - Sebastian Walach
修改了答案,因为我怀疑您可能正在使用相同的文件/ URL 来呈现表单和处理插入。请确认是否是这种情况。 - Alberto Antillon

0

尝试使用这个:

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

这里的$connect是你的数据库连接。你需要在代码的早期某处指定这个连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接