Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于复选框的多个sql条件_Php_Mysql_Wordpress - Fatal编程技术网

Php 基于复选框的多个sql条件

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

我正在开发一个高级搜索系统,根据用户的技能搜索用户。这些是各种技能

每个技能存储在数据库中的单独列中,值为0和1。 现在,当我搜索一个用户时,我使用的是
标准,这样当我检查访问权限时,就会找到具有访问技能的用户。以下是搜索条件的代码:

$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) "; }
...