0

ドロップダウン メニューがあり、その選択をクエリで使用したいと考えています。

次のものがあるとします。これは実際にはサイトのデータベースからロードされますが、投稿するコードの量を制限するためです。

<select id="parent" name="parent">
<option value="P1">parent 1</option>
<option value="P2">parent 2</option>
</select>

選択したものに応じて P1 または P2 の子テーブルをクエリしたいので、次のクエリがあります。

$selected_parent=$_REQUEST['parent'];<-- Not sure if this is right at all

$query = "SELECT parent.*, child.* 
          FROM parent 
          INNER JOIN child 
          ON parent.value = child.parent
          WHEN parent.value = '$selected_parent'";

次の2つのテーブルがあります。

PARENT                 CHILD
ID   NAME     VALUE    ID    NAME    PARENT
01---parent1--P1       01----child1--P1
02---parent2--P2       02----child2--P1
03---parent3--P2       03----child3--P2

これは SQL インジェクションの可能性があることを知っています。後で修正します。変数がクエリ内でどのように機能するかについてもっと興味があります。

編集:現在、「$selected_pa​​rent」を使用すると結果が得られません。

前もって感謝します

4

3 に答える 3

0

WHENはクエリの有効な構文ではありません。を使用しWHEREます。

于 2012-07-10T23:01:03.800 に答える
0

$selected_pa​​rent の値ではなく、parent.value を文字列定数 '$selected_pa​​rent' に設定しているようです。

私はphpを知りませんが、あなたが書く必要があると思っていたでしょう

WHEN parent.value = '" + $selected_parent + "'";

(連結演算子が間違っていたらごめんなさい。私は C# しか使っていません。)

于 2012-07-10T23:01:04.500 に答える
0

あなたは非常に近いです。私が見ることができる唯一の変更は、次のようなフォームタグでドロップダウンボックスをラップすることです:

<form action="<?php echo $_SERVER['php_self']; ?>" method="POST">
    <select id="parent" name="parent">
        <option value="P1">parent 1</option>
        <option value="P2">parent 2</option>
    </select>
</form>

変数を取得するときは、$_REQUEST の代わりに $_POST を使用します。

$selected_parent=$_POST['parent'];

それ以外は、クエリは問題なく機能するはずです。

于 2012-07-10T23:01:12.760 に答える