Php 基于复选框的多个sql条件
我正在开发一个高级搜索系统,根据用户的技能搜索用户。这些是各种技能 每个技能存储在数据库中的单独列中,值为0和1。 现在,当我搜索一个用户时,我使用的是Php 基于复选框的多个sql条件,php,mysql,wordpress,Php,Mysql,Wordpress,我正在开发一个高级搜索系统,根据用户的技能搜索用户。这些是各种技能 每个技能存储在数据库中的单独列中,值为0和1。 现在,当我搜索一个用户时,我使用的是或标准,这样当我检查访问权限时,就会找到具有访问技能的用户。以下是搜索条件的代码: $query .= "SELECT * FROM wordpress_candidate WHERE (city = '$cty') OR (state = '$stt')"; if(isset($s_g_1)){ $query .= "OR (genera
或标准,这样当我检查访问权限时,就会找到具有访问技能的用户。以下是搜索条件的代码:
$query .= "SELECT * FROM wordpress_candidate
WHERE (city = '$cty')
OR (state = '$stt')";
if(isset($s_g_1)){ $query .= "OR (generala = '$s_g_1')"; }
if(isset($s_g_2)){ $query .= "OR (generalb = '$s_g_2')"; }
if(isset($s_g_3)){ $query .= "OR (generalc = '$s_g_3')"; }
if(isset($s_g_4)){ $query .= "OR (generald = '$s_g_4')"; }
//if(isset($s_g_5)){ $query .= "OR (generale = '$s_g_5')"; }
if(isset($s_g_6)){ $query .= "OR (generale = '$s_g_6')"; }
if(isset($s_g_7)){ $query .= "OR (generalf = '$s_g_7')"; }
if(isset($s_g_8)){ $query .= "OR (generalg = '$s_g_8')"; }
if(isset($s_g_9)){ $query .= "OR (generalh = '$s_g_9')"; }
if(isset($s_g_10)){ $query .= "OR (generali = '$s_g_10')"; }
if(isset($s_g_11)){ $query .= "OR (generalj = '$s_g_11')"; }
if(isset($s_g_12)){ $query .= "OR (generalk = '$s_g_12')"; }
if(isset($s_g_other)){ $query .= "OR (generall = '$s_g_other')"; }
if(isset($s_f_1)){ $query .= "OR (funda = '$s_f_1')"; }
if(isset($s_f_2)){ $query .= "OR (fundb = '$s_f_2')"; }
if(isset($s_f_3)){ $query .= "OR (fundc = '$s_f_3')"; }
if(isset($s_f_4)){ $query .= "OR (fundd = '$s_f_4')"; }
if(isset($s_f_5)){ $query .= "OR (funde = '$s_f_5')"; }
if(isset($s_f_6)){ $query .= "OR (fundf = '$s_f_6')"; }
if(isset($s_f_7)){ $query .= "OR (fundg = '$s_f_7')"; }
if(isset($s_f_8)){ $query .= "OR (fundh = '$s_f_8')"; }
if(isset($s_f_9)){ $query .= "OR (fundi = '$s_f_9')"; }
if(isset($s_f_10)){ $query .= "OR (fundj = '$s_f_10')"; }
if(isset($s_f_11)){ $query .= "OR (fundk = '$s_f_11')"; }
if(isset($s_f_12)){ $query .= "OR (fundl = '$s_f_12')"; }
if(isset($s_f_13)){ $query .= "OR (fundm = '$s_f_13')"; }
if(isset($s_f_other)){ $query .= "OR (fund = '$s_f_other')"; }
if(isset($s_a_1)){ $query .= "OR (acca = '$s_a_1')"; }
if(isset($s_a_2)){ $query .= "OR (accb = '$s_a_2')"; }
if(isset($s_a_3)){ $query .= "OR (accc = '$s_a_3')"; }
if(isset($s_a_4)){ $query .= "OR (accd = '$s_a_4')"; }
if(isset($s_a_5)){ $query .= "OR (acce = '$s_a_5')"; }
if(isset($s_a_6)){ $query .= "OR (accf = '$s_a_6')"; }
if(isset($s_a_7)){ $query .= "OR (accg = '$s_a_7')"; }
if(isset($s_a_8)){ $query .= "OR (acch = '$s_a_8')"; }
if(isset($s_a_9)){ $query .= "OR (acci = '$s_a_9')"; }
if(isset($s_a_10)){ $query .= "OR (accj = '$s_a_10')"; }
if(isset($s_a_11)){ $query .= "OR (acck = '$s_a_11')"; }
if(isset($s_a_other)){ $query .= "OR (accl = '$s_a_other')"; }
if(isset($s_p_1)){ $query .= "OR (puba = '$s_p_1')"; }
if(isset($s_p_2)){ $query .= "OR (pubb = '$s_p_2')"; }
if(isset($s_p_3)){ $query .= "OR (pubc = '$s_p_3')"; }
if(isset($s_p_4)){ $query .= "OR (pubd = '$s_p_4')"; }
if(isset($s_p_5)){ $query .= "OR (pube = '$s_p_5')"; }
if(isset($s_p_6)){ $query .= "OR (pubf = '$s_p_6')"; }
if(isset($s_p_7)){ $query .= "OR (pubg = '$s_p_7')"; }
if(isset($s_p_8)){ $query .= "OR (pubh = '$s_p_8')"; }
if(isset($s_p_9)){ $query .= "OR (pubi = '$s_p_9')"; }
if(isset($s_p_other)){ $query .= "OR (pubj = '$s_p_other')"; }
if(isset($s_i_1)){ $query .= "OR (ita = '$s_i_1')"; }
if(isset($s_i_2)){ $query .= "OR (itb = '$s_i_2')"; }
if(isset($s_i_3)){ $query .= "OR (itc = '$s_i_3')"; }
if(isset($s_i_4)){ $query .= "OR (itd = '$s_i_4')"; }
if(isset($s_i_5)){ $query .= "OR (ite = '$s_i_5')"; }
if(isset($s_i_6)){ $query .= "OR (itf = '$s_i_6')"; }
if(isset($s_i_7)){ $query .= "OR (itg = '$s_i_7')"; }
if(isset($s_i_8)){ $query .= "OR (ith = '$s_i_8')"; }
if(isset($s_i_other)){ $query .= "OR (iti = '$s_i_other')";
这段代码工作得很完美,但如果Access和Crystal都被选中,我想根据这两个条件搜索用户,但它只根据一个条件搜索。我知道我可以在查询中同时选中复选框和add and的条件。但我如何才能为所有的复选框做到这一点
HTML
id=“s_f_1”name=“s_f_1”type=“checkbox”>行动
id=“s_p_1”name=“s_p_1”type=“checkbox”>Corel Draw
id=“s_g_2”name=“s_g_2”type=“checkbox”>水晶报表
id=“s_a_2”name=“s_a_2”type=“checkbox”>基金EZ
id=“s_i_2”name=“s_i_2”type=“checkbox”>PC
id=“s_f_2”name=“s_f_2”type=“checkbox”>Donor2
id=“s_p_2”name=“s_p_2”type=“checkbox”>头版
id=“s\u g\u 4”name=“s\u g\u 4”type=“checkbox”>Filemaker Pro
id=“s_a_11”name=“s_a_11”type=“checkbox”>大平原
id=“s_i_4”name=“s_i_4”type=“checkbox”>Windows XP
id=“s\u f\u 11”name=“s\u f\u 11”type=“checkbox”>电子设备
id=“s_p_9”name=“s_p_9”type=“checkbox”>InDesign
id=“s_g_6”name=“s_g_6”type=“checkbox”>Lotus
id=“s_a_5”id=”“name=“s_a_5”type=“checkbox”>OneWrite Plus
id=“s_i_6”name=“s_i_6”type=“checkbox”>Oracle
id=“s_f_5”name=“s_f_5”type=“checkbox”>GiftmakerPRO
id=“s_p_5”name=“s_p_5”type=“checkbox”>Photoshop
id=“s_g_8”name=“s_g_8”type=“checkbox”>Powerpoint
id=“s_a_7”name=“s_a_7”type=“checkbox”>Quickbooks
id=“s_i_8”name=“s_i_8”type=“checkbox”>Windows 2000
id=“s_g_5”name=“s_g_5”type=“checkbox”>综管信息系统
id=“s_p_7”name=“s_p_7”type=“checkbox”>MS Publisher
id=“s_g_9”name=“s_g_9”type=“checkbox”>Word
id=“s_a_9”name=“s_a_9”type=“checkbox”>真实世界
id=“s_g_10”name=“s_g_10”type=“checkbox”>完美单词
id=“s_a_10”name=“s_a_10”type=“checkbox”>所罗门
id=“s_f_8”name=“s_f_8”type=“checkbox”>质押制造商
id=“s_f_9”name=“s_f_9”type=“checkbox”>提升机的边缘
使用和
子句而不是或
来搜索两者
if(isset($s_g_1)){ $query .= "AND (generala = '$s_g_1')"; }
if(isset($s_g_2)){ $query .= "AND (generalb = '$s_g_2')"; }
我还建议,使用一个循环来检查所有这些内容。我认为您需要一个输入来选择“and”或“or”类型的搜索
我理解,您只想筛选用户的检查技能。如果未选中复选框,则用户是否具有该技能无关紧要;对吗
在这里,您只筛选积极技能:
if ($s_g_1) { $query .= " AND (generala = 1) "; }
if ($s_g_2) { $query .= " AND (generalb = 1) "; }
...
因此,如果选择了“Access”和“Crystal”,您将获得所有同时具备这两种技能(和
)的用户,而不管他们的其他技能如何
(我不在if条件中使用isset()
进行检查-我只想在我的查询中使用该条件,如果$s_g_1
不是0
(=如果选中了复选框)。如果您不知道$s_g_1
是否已定义,请使用!empty($s_g_1)
进行检查,以避免通知我迟到了2分钟。:)我只想指出,通过他的提问,他已经在寻找那些同时具备这两种技能的人,其中只有两种技能中的一种。如果我使用和
,它也会检查未检查的值,但如果只检查了和
两个值,则我需要检查它们是否有效。请阅读问题。它不应该使用未检查的值。如果是的话,我认为问题出在代码的其他地方。试着这样做:If(isset($s_g_1)&&s_g_1){
您可以使用trim或其他方法来确保在查询中连接字符串。是的,但它们太多了。我如何才能检查所有这些字符串?当选择两个或多个字符串时,条件是否可以自行检查?我想您需要另一个输入来选择搜索类型。如果这对您无效,您可以计算已检查的检查数。好的一个问题,我希望每个字段都像这样,所以WHERE(city='$cty')”;
当设置变量$cty
时,如何使其也可用?好的,一个问题,我希望每个字段都像这样,所以WHERE(city='$cty');
当设置变量$cty
时,如何使其也可用?
$query .= "SELECT * FROM wordpress_candidate
WHERE (city = '$cty')
OR (state = '$stt')";
if (searchType = 'AND')
{
$and_or = 'AND'
}
else
{
$and_or = 'OR'
}
if(isset($s_g_1) && ($s_g_1)) { $query .= $and_or + " (generala = '$s_g_1')"; }
if(isset($s_g_2) && ($s_g_2)) { $query .= $and_or + " (generalb = '$s_g_2')"; }
if ($s_g_1) { $query .= " AND (generala = 1) "; }
if ($s_g_2) { $query .= " AND (generalb = 1) "; }
...