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

时间:2016-02-14 09:48:33

标签: php foreach get

我正在尝试使用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 个答案:

答案 0 :(得分:0)

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

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。 GET变量为JSON

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

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

要获取JSON字符串,可以使用js function 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'] )

PhpFiddle demo