1

次のような複数の値を持つ変数を送信しています。

JQUERY:

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

-> indexMain.php?colors = blue + red + brown

これらの値を_GETしてから、whileループで使用して、次のようなSQLクエリに入れたいと思います。

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

ありがとう!

編集:これが私の現在のコードですが、機能していません。1番目の色に対応するアイテムが表示されているだけです。

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

    }
4

3 に答える 3

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()定義されているかどうかを確認するために使用できます。

于 2012-08-17T03:11:32.793 に答える
0

私はこれがうまくいくと思います:

$colors = explode(' ', $_GET['color']);
foreach($colors as $color) {
    // your code here...
}
于 2012-08-17T03:04:10.973 に答える
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);
}
于 2012-08-17T03:06:18.833 に答える