0

我有一个时事通讯,其中有以下复选框:
<input type="checkbox" name="assign[]" value="1" >designation_code_1
<input type="checkbox" name="assign[]" value="3" >designation_code_2
<input type="checkbox" name="assign[]" value="4" >designation_code_3
<input type="checkbox" name="assign[]" value="5" >designation_code_4

我有两个表tbl_designationstbl_profile下面提到的是我用来从各个表中检索值的查询。

SELECT 
    * 
FROM 
    tbl_designations AS A
        JOIN (
            SELECT 
                * 
            FROM 
                tbl_profile
            ) AS B
        ON A.is_placement = B.is_placement 
        AND A.designation_code = B.hierarchy 
        AND A.designation_id =5

这个查询给了我 100 条记录each,这些记录对应于 X =(1,2,3,4)designation_id = "X"

X的值是通过选中上面的复选框来确定的。如果我只选择一个复选框(比如第一个复选框),那么我将得到designation_id = 1 并且查询将根据复选框的选择/选择获取记录并给出所需的结果。

我的疑问是我应该写什么查询,以便当我一次选择多个复选框时,它会根据复选框中的选择(s)从表中提取记录 (表示对应于复选框的)。

我正在使用foreach循环来获取存储在assign[]数组中的值。
请帮忙

4

6 回答 6

1

早上好好奇,

你可以这样写:

... and A.designation_id in (1, 2, 3)

括号内的值应替换为从选定复选框返回的值。

于 2012-08-20T06:26:37.223 回答
0

这很愚蠢。IN改为使用逗号连接每个元素$_POST['assign']

于 2012-08-20T06:25:34.583 回答
0

这并不能直接回答您的问题,但是当我编辑您的帖子以进行格式更改时,我忍不住看到了 SQL。

我在下面为您重写了它(您永远不应该使用 aselect *作为连接 - 只需使用整个表,您的数据库就会对您满意),您应该会找到更好的结果。

SELECT 
    * 
FROM 
    tbl_designations AS A
        JOIN tbl_profile B
        ON A.is_placement = B.is_placement 
        AND A.designation_code = B.hierarchy 
        AND A.designation_id =5
于 2012-08-20T06:26:23.700 回答
0

试试这个:

where X in (1,2,3,4)
于 2012-08-20T06:29:01.297 回答
0

您可以构建一个逗号分隔的字符串,并通过 FIND_IN_SET 函数在查询中使用它,例如 -

...
WHERE FIND_IN_SET(X, '1,2,3,4')

FIND_IN_SET(str,strlist)函数。

于 2012-08-20T06:39:33.610 回答
0

为每次刷新选择随机列数,我们使用这个:

$sql = mysql_query("SELECT * FROM $Tablename where column = '$bookmark' order by rand() limit 1");

:)

于 2012-08-20T06:47:42.857 回答