php中避免循环查询数据库的方式

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33980878/article/details/82701719

在循环中查询数据不但效率低下而且对数据库造成很大对压力。在平常的开发中应该尽量避免这种情况,以下是我以laravel框架的一个例子:

需求:有两个数据表,一个小组类型表,一个小组表。需查出小组类型下的小组。

当然这里你可以使用关联查询。我只是拿这个举个例子,代码如下:

//查出小组的类型
$groupType = GroupType::select('id','title as name')->get()->toArray();
//取小组类型id的集合数组
$groupTypeIds = array_map(function ($item){
    return $item['id'];
},$groupType);
//以小组类型分组查出小组类型和小组
$group = Group::select('id','name','typeId')
    ->whereIn('typeId',$groupTypeIds)
    ->get()
    ->groupBy('typeId')
    ->toArray();
//处理一下
foreach ($groupType as $k1 => $v1) {
    $groupType[$k1]['children'] = array_key_exists($v1['id'], $group) ? $group[$v1['id']] : [];
}

 

展开阅读全文

JSP查询数据库循环输出

05-30

前两天从网上找的一个代码 是购物车的 现在问题是物品列表显示不出来,还有就是自己写的一个用户信息表也没法显示数据,不知道是查询的时候有问题还是显示的时候有问题,连接数据库是没有问题的,我注册和登录 以及添加修改物品信息都可以 就是查询输出有问题,谁能帮我看一下 最好能吧解决的方法代码一起给我,不要说怎么怎么弄,我是新手啥都不会,和我讲了我也不一定懂哎。rn[code=java]rn<%@ page contentType="text/html; charset=GB2312" %>rn<%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>rn<%@ page import="java.util.*" %>rn<%@ page import="javabean.User" %>rn<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>rnrn rn rn 用户名rn 密码rn 联系方式rn 邮箱rn rnrn<%rn Connection conn=null;rn Statement stmt=null;rn ResultSet rs=null;rn tryrn Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");rn String uri="jdbc:sqlserver://localhost:1433;DatabaseName=wsdc";rn conn=DriverManager.getConnection(uri,"zhujian","ld0951148");rn stmt = conn.createStatement();rn String sql = "select * from Users";rn rs = stmt.executeQuery(sql);rn while (rs.next()) rn%> rnrn <%=rs.getString("username") %>rn <%=rs.getString("password") %>rn <%=rs.getString("mobile") %>rn <%=rs.getString("email") %>rnrn<%rnrnrs.close();rnstmt.close();rnconn.close();rncatch(Exception e)rn e.printStackTrace();rnrn%>rnrn[/code]rn还有一种代码是这样的 也是没法显示信息rn[code=java]rn<%@ page contentType="text/html; charset=GB2312" %>rn<%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>rn<%@ page import="java.util.*" %>rn<%@ page import="javabean.Yonghu" %>rn<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>rn<%rn Connection conn = null;rn PreparedStatement pre = null;rn ResultSet res = null;rn List meList = new ArrayList();rn tryrn Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");rn String uri="jdbc:sqlserver://localhost:1433;DatabaseName=wsdc";rn conn=DriverManager.getConnection(uri,"zhujian","ld0951148");rn String sql = "select * from Users";rn pre = conn.prepareStatement(sql);rn res = pre.executeQuery();rn while (res.next()) rn Yonghu user = new Yonghu();rn user.setUsername(res.getString("username"));rn user.setPassword(res.getString("password"));rn user.setMobile(res.getString("mobile"));rn user.setEmail(res.getString("email"));rn meList.add(user);rn rn catch (Exception ex) rn ex.printStackTrace();rn finally rn rn tryrn rn if(res!=null)rn res.close();rn if(pre!=null)rn pre.close();rn if(conn!=null)rn conn.close();rn rn catch (SQLException e) rn rn // TODO Auto-generated catch blockrn e.printStackTrace();rn rn rn request.setAttribute("me",meList);rn%>rnrn rn rn 用户名rn 密码rn 联系方式rn 邮箱rn rn rn rn $ml.password rn $ml.mobile rn $ml.email rn rn rnrn[/code]rn求大神帮助很急了 要交了=。= 论坛

没有更多推荐了,返回首页