_GET在PHP中用于具有多个值的变量

时间:2012-08-17 03:00:24

标签: php variables get

我发送的变量有多个这样的值:

JQUERY:

 $(".indexMain").load('indexMain.php?color=' + colors.join("+"), function()

- >     indexMain.php?颜色=蓝+红棕色+

我想_GET这些值,然后在while循环中使用它们将它们放入像这样的SQL查询中:

$items = $con -> prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
$items -> bindValue(":colorbase1", $color);

谢谢!

编辑:这是我当前的代码,但它不起作用,它只显示与第一种颜色相对应的项目。

foreach (explode(' ', $_GET['color']) as $color) 
    {
        $items = $con -> prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
        $items -> bindValue(":colorbase1", $color);

    }

3 个答案:

答案 0 :(得分:3)

indexMain.php?color=blue+red+brown

应该是

indexMain.php?colors%5B%5D=blue&colors%5B%5D=red&colors%5B%5D=brown

相当于

indexMain.php?colors[]=blue&colors[]=red&colors[]=brown

这将创建一个可以$_GET['colors']访问的数组。之后使用这个PHP:

foreach ($_GET['colors'] as $color) {
    $query = $con->prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
    if ($query->execute(":colorbase1", $color)) {
        // use results from query
    } else {
        // handle failed query
    }
}

如果您不想更改查询字符串,可以选择执行此操作:

foreach (explode(' ', $_GET['colors']) as $color) {
    $query = $con->prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
    if ($query->execute(":colorbase1", $color)) {
        // use results from query
    } else {
        // handle failed query
    }
}

请注意,唯一的变化是在第一行,我们用空格分割字符串(因为“+”转换为空格字符)。

另请注意,这两个示例均假定$_GET['colors']已定义。您可以使用isset()检查是否已定义。

答案 1 :(得分:0)

我认为这应该有效:

$colors = explode(' ', $_GET['color']);
foreach($colors as $color) {
    // your code here...
}

答案 2 :(得分:0)

试试这个

$colors = explode("+", $_GET['color']);
foreach($colors as $color){
$items = $con -> prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
$items -> bindValue(":colorbase1", $color);
}

这个怎么样

$colors = explode(" ", $_GET['color']);
foreach($colors as $color){
$items = $con -> prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
$items -> bindValue(":colorbase1", $color);
}