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'";

我将有以下两个表格:

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

您似乎将 parent.value 设置为字符串常量 '$selected_pa​​rent' 而不是 $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>

然后当您获取变量时,使用 $_POST 而不是 $_REQUEST:

$selected_parent=$_POST['parent'];

除此之外,您的查询应该可以正常工作。

于 2012-07-10T23:01:12.760 回答