很多站长朋友们都不太清楚多重条件查询php,今天小编就来给大家整理多重条件查询php,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP新手,有关php多条件查询的问题,求大神指点,分不够可以加 2、 PHP中关于查询多个条件的代码 3、 php多条件查询问题,怎么过滤空值? 4、 php框架 laravel 多重条件查询。对数据库查询,在满足日期范围查询的同时在满足一个或几个条件查询。 PHP新手,有关php多条件查询的问题,求大神指点,分不够可以加你在第一行,加一行
header('Content-Type: text/html; charset=utf-8');
如果加了以后还是乱码,那你在notpad++里的菜单栏上,点“格式”,点“以UTF-8,无BOM格式编码”,乱码问题就解决了。
PHP中关于查询多个条件的代码先向大家说明需求:按照系统的要求,将通过部门名称、员工姓名、PC名称、IP地址等等字段来进行组合查询从而得到想要的数据结果。那么,为了简单起见,我们用两个条件(部门名称、员工姓名)的组合查询来向大家说明这一技术技巧。当只输入部门名而员工姓名为空值时,那么部门内所有员工信息将被呈现,只有当同时限制部门与员工姓名时,才能查询出唯一信息。
那就让我们开始。
首先建立查询页面search.php,不同于上次单一条件查询,这次需要两个条件的组合进行查询。
<html>
<body>
<h3>查询</h3>
<form action="search_result.php" method="POST">
部门名称:<input type="text" size=25 name="depart" value=""> <br><br>
员工姓名: <input type="text" size=25 name="ename" value=""> <br><br>
<input type="submit" name="提交" value="提交">
</form>
</body>
</html>
和上次一样,我们将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='技术部' 。这样,查询语句的意思就变成查询所有部门为技术部员工的信息了,这就是了。
<?php
$link =mysql_connect("localhost","root","管理员密码");
mysql_select_db("infosystem", $link);
?>
<?php
//注释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 "<table>";
echo "<tr><td>部门</td><td>员工姓名</td></tr>";
while($row = mysql_fetch_object($rs)) echo "<tr><td>$row->depart</td><td>$row->ename</td></tr>";
echo "</table>";
mysql_close($link);
?>
注释1:接收search.php通过post传递出的参数,把两个参数分别存储入变量:depart和ename。
注释2:判断参数是否为空,如果为空,不作任何操作。如果有参数传出,则生成相应SQL语句。
注释3:用追加的方法生成SQL语句。
注释4:生成数据集,显示数据,最后关闭数据库连接。
php多条件查询问题,怎么过滤空值?是的正如你所说有两种解决方案,第一种是采用PHP的方式,先判断数据的合法性,比如是否提交了空值(推荐使用,没有垃圾数据);第二种不做任何判断,空值也能提交到数据库,只是在SQL查询时过滤空值数据(不推荐使用,有垃圾数据)。
解决方案1(通过PHP过滤空值数据):
if ($_POST['字段'] == '') exit('<script type="text/javascript">alert("数据不合法!");history.back();</script>'); // 依此类推,逐一判断表单$_POST数据
解决方案2(通过SQL查询来过滤空值数据):
SELECT `字段名` FROM `表名` WHERE `字段1` NOT IN ('', NULL) AND `字段2` NOT IN ('', NULL) ...;
以上就是两种解决方案,我推荐两种方案组合使用,这样确保万无一失,如有问题欢迎追问~
php框架 laravel 多重条件查询。对数据库查询,在满足日期范围查询的同时在满足一个或几个条件查询。laravel的where条件可以无限制加的,想加多少个加多少个的
$result = Model::whereIn(/*条件1*/)
->whereNotIn(/*条件2*/)
->whereBetween(/*条件3*/)
->where(/*条件4*/)
->orderBy()
->get()
//类似这样的,where条件可以接很多个,没有限制
关于多重条件查询php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于多重条件查询php 多重条件查询excel的详细内容...