我有一个下拉菜单,我想在查询中使用选择。
说我有以下内容,这实际上是从我网站上的数据库加载的,但是为了限制我发布的代码量:
<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_parent'时我没有得到任何结果。
提前致谢
答案 0 :(得分:0)
WHEN
在您的查询中不是有效语法。使用WHERE
。
答案 1 :(得分:0)
您似乎将parent.value设置为字符串常量'$ selected_parent'而不是$ selected_parent的值。
我不知道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'];
除此之外,您的查询应该可以正常工作。