将两个数组中的行插入php中的mysql表中


Insert rows from two arrays into mysql table in php

我正试图将两个数组中的值插入到表中。我需要将array1array2中的相应值作为一行插入表中。桌子那一排看起来像:

value1, array1[0], array2[0] ...
value1, array1[1], array2[1] ...

我试着用两个前臂环来做。但内环内的值正在重复。这是我的代码:

<?php
$servicetype=$_POST['servicetype'];
$serviceamt=$_POST['amount'];
foreach($servicetype as $sertype)
{
foreach($serviceamt as $seramt)
{
$amcinsert2=mysql_query("insert into amc_service_types (amc_service_id,service_type,service_amount) values('$id','$sertype','$seramt')");
break;
}
}
?>

当我执行此操作时,表将看起来像:

value1, array1[0], array2[0] ...
value2, array1[1], array2[0] ...
value3, array1[2], array2[0] ...

我不明白我应该在哪里更改代码。有人能帮我吗?

如果您的数组都是数字索引的,并且具有相同的键,您可以这样循环它们:

for( $i = 0 ; $i < count( $servicetype ) ; $i++ ) {
  $amcinsert2=mysql_query("insert into amc_service_types (amc_service_id,service_type,service_amount) values('$id','" . $servicetype[$i] "','" . $serviceamt[$i] . "')");
}

此外,mysql_*函数也不推荐使用,您应该将它们替换为PDO或mysqli_*函数。

一开始,你必须确保两个数组的大小相同,实际上你正在做的是向mysql中添加n*n个组合,而不是你想做的,break将从第一次运行中退出for循环,这无论如何都将是第一个数组[0],所以试着这样做:

<?php
$servicetype=$_POST['servicetype'];
$serviceamt=$_POST['amount'];
var i=0;
foreach($servicetype as $sertype)
{
$amcinsert2=mysql_query("insert into amc_service_types (amc_service_id,service_type,service_amount) values('$id','$sertype','$serviceamt[$i]')");
$i++;  
}
?>