使用sql查询中的下拉列表中的变量

时间:2012-07-10 22:49:52

标签: php sql

我有一个下拉菜单,我想在查询中使用选择。

说我有以下内容,这实际上是从我网站上的数据库加载的,但是为了限制我发布的代码量:

<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'时我没有得到任何结果。

提前致谢

3 个答案:

答案 0 :(得分:0)

WHEN在您的查询中不是有效语法。使用WHERE

答案 1 :(得分:0)

您似乎将parent.value设置为字符串常量'$ selected_pa​​rent'而不是$ selected_pa​​rent的值。

我不知道php,但我认为你需要写

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

(对不起,如果我的连接操作符错了。我只使用C#。)

答案 2 :(得分: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'];

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