-2

我试图让这个嵌套foreach循环工作,但我没有运气。这是我的代码。

$q = 0;
$arrayCountTwo = count($_POST['quantity']);
$i = 0;
$arrayCountThree = count($_POST['items']);
foreach ($_POST['items'] as $items) {
    $sql = '';
    foreach ($_POST['quantity'] as $quantity) {
        $q++;
        if ($q > $arrayCountTwo) {
            break;
        } else {
            $sql .= "INSERT INTO `trade_show_reserved` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('".$items."','".$startDate."', '".$endDate."','".$quantity."')";
        }
        var_dump($sql);
    }   
}

$items它在每次迭代时不断给我数组中的第一个值。我该如何解决?

这是您要求的数组。

items数组和数量数组按顺序排列。

array(3) {
  [0]=>
  string(2) "11"
  [1]=>
  string(1) "6"
  [2]=>
  string(1) "2"
}

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "1"
}

每次都应该这样做。

INSERT INTO `ts_table` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('11','2013-4-11', '2013-4-25','1')

INSERT INTO `ts_table` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('6','2013-4-11', '2013-4-25','2')
4

3 回答 3

2

这应该做你想要的:

foreach ($_POST['items'] as $key => $items)
{
  $sql = "INSERT INTO `trade_show_reserved` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('".$items."','".$startDate."','".$endDate."','".$_POST['quantity'][$key]."')";
  echo $sql . '<br>'; 
}
于 2013-03-26T21:36:24.123 回答
0

我想你正在寻找这样的东西。假设item[1]quantity[1]是相关的;

foreach ($_POST['items'] as $idx => $item) {
    // get the quantity with the same index as the item
    // if it does not exist, default to zero
    $quantity = isset($_POST['quantity'][$idx]) ? $_POST['quantity'][$idx] : 0;

    // insert query... 

}
于 2013-03-26T21:37:05.453 回答
0
for($i = 0, $iMax = min(count($_POST['items']), count($_POST['quantity'])); $i < $iMax; $i++)
{
    $sql .= "INSERT INTO `trade_show_reserved` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('".$_POST['items'][$i]."','".$startDate."', '".$endDate."','".$_POST['quantity'][$i]."')";
}

更符合您的需要。

于 2013-03-26T21:36:15.537 回答