php mysql多条件查询界面_PHP组合查询多条件查询实例代码

先向大家说明需求:按照我们系统的要求,我们将通过部门名称、员工姓名、PC名称、IP地址等等字段来进行组合查询从而得到想要的数据结果。那么,为了简单起见,我们用两个条件(部门名称、员工姓名)的组合查询来向大家说明这一技术技巧。当我们只输入部门名而员工姓名为空值时,那么部门内所有员工信息将被呈现,只有当你同时限制部门与员工姓名时,才能查询出唯一信息。

那就让我们开始。

首先建立查询页面search.php,不同于上次单一条件查询,这次我们需要两个条件的组合进行查询。

查询

部门名称: 

员工姓名:  

和上次一样,我们将depart与ename的值通过Post的方法传递给search_result.php文件。

然后便到了这次主题的关键,search_result.php文件如何接受这两个参数值,并判断当其中一个字段为空值时,如何将其排除查询条件。

怎么理解上面这句话,举例子来说,如果我们单纯地将接收参数的查询语句写成 select * from info where depart='部门值参数'  and ename='员工姓名参数' 的话,那么如果其中一个参数为空时我们就将得到 select * from info where depart='技术部' and ename='' ,显然,这样的查询很有可能返回空的结果,因为这句查询语句的意思就是,查询所有技术部没有姓名的人的数据,这不是很荒唐么,倒过来如果是 select * from info where depart='' and ename='sunec' ,那么它的意思就是查询员工姓名为sunec但是不属于任何部门的人,那自然也是查询不到结果的。

正确的做法应该是,在查询语句中过滤掉那个为空值的的参数。比如,当我们只输入部门名时应该得到 select * from info where depart='技术部' 。这样,查询语句的意思就变成查询所有部门为技术部员工的信息了,这就是我们想要的。

明确了思路,那么,下一次我们就去实现它!

$link =mysql_connect("localhost","root","管理员密码");

mysql_select_db("infosystem", $link);

?>

//注释1-----------------------------

$depart=$_POST["depart"];

$ename=$_POST["ename"];

//注释2------------------------

if($depart != null){

$a = " and depart like '%$depart%'";}

if($ename != null){

$b = " and ename like '%$ename%'";}

//注释3------------------------

$q = "SELECT * FROM info where (1=1)";

$q .=$a;

$q .=$b;

//注释4------------------------------------------

mysql_query("SET NAMES GB2312");

$rs = mysql_query($q, $link);

echo "

echo "

部门员工姓名";

while($row = mysql_fetch_object($rs)) echo "

$row->depart$row->ename";

echo "

";

mysql_close($link);

?>

注释1:接收search.php通过post传递出的参数,把两个参数分别存储入变量:depart和ename。

注释2:判断参数是否为空,如果为空,不作任何操作。如果有参数传出,则生成相应SQL语句。

注释3:用追加的方法生成SQL语句。

注释4:生成数据集,显示数据,最后关闭数据库连接。

怎么样,是不是实现了组合查询的功能呢?有机会的话,我将更详细的对此做一些介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值