如何使用 php 获取未知数量的参数


How to get unknown number of parameters using php

我正在尝试使用 get 在 php 中获取参数。我从中获取参数的页面带有 ajax,这意味着我不知道参数发送了多少次,但我知道它们的类型。我可以得到的例子:

makeOrder.php?大小=37&数量=2
makeOrder.php?大小=37&数量=2&大小=39&数量=5
makeOrder.php?大小=37&数量=2&大小=39&数量=5&大小=36&数量=10

等等...

我写信只是为了得到一个参数

<?php
    //create a mySQL DB connection:
    $dbhost = "166.62.8.11";
    $dbuser = "auxstudDB5";
    $dbpass = "auxstud5DB1!";
    $dbname = "auxstudDB5";
    $connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    //testing connection success
    if(mysqli_connect_errno()) {
        die("DB connection failed: " . mysqli_connect_error() . " (" . mysqli_connect_errno() . ")"
        );
    }
    $size1 = $_GET['size'];
    $quantity1= $_GET['quantity'];
    $connection->query("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'"); 
    foreach(size as $size1){
        foreach (quantity as $quantity1) {
            $sql = "INSERT INTO tbl_order_202 VALUES('$size1','$quantity1')";
            $result = $connection->query($sql);
            if ($connection->query($sql) === TRUE) {
                echo "ok ";
            } else {
                echo "Error: " . $sql . "<br>" . $connection->error;
            }               
        }
    }
    mysqli_close($connection);  
?>

我知道我可以使用foreach,但并不真正了解如何超过尺寸和数量

我建议你两种不同的方式:

1. GET 变量作为数组

在你的javascript/jQuery脚本中,你必须以这样的方式调用php url:

makeOrder.php?size[]=50&quantity[]=10&size[]=10&quantity[]=2

然后,在 PHP 文件中,您的 $_GET 变量将采用以下值:

Array
(
    [size] => Array
        (
            [0] => 50
            [1] => 10
        )
    [quantity] => Array
        (
            [0] => 10
            [1] => 2
        )
)

2. 获取变量作为 JSON

在你的javascript/jQuery脚本中,你必须以这样的方式调用php url:

makeOrder.php?data=[{"size":"50","quantity":"10"},{"size":"10","quantity":"2"}]

要获取 JSON 字符串,可以使用 js 函数JSON.stringify()

然后,在 PHP 文件中,以这种方式检索值:

$data = json_decode( $_GET['data'] );

将产生如下数组:

Array
(
    [0] => stdClass Object
        (
            [size] => 50
            [quantity] => 10
        )
    [1] => stdClass Object
        (
            [size] => 10
            [quantity] => 2
        )
)

要获取数组数组(而不是对象(,您可以使用json_decode( $_GET['data'], True )而不是json_decode( $_GET['data'] )