求查询优化方法

php中文网
发布: 2016-06-23 14:01:12
原创
1095人浏览过

请问下面的代码有优化的方法吗

$catalog_1 = "select name from commodity where catalog = 1 ORDER BY rank desc LIMIT 10";$result_1 = mysql_query($catalog_1);while($row_1 = mysql_fetch_assoc($result_1)){     $response [] = $row_1;}$catalog_2 = "select name from commodity where catalog = 2 ORDER BY rank desc LIMIT 10";$result_2 = mysql_query($catalog_2);while($row_2 = mysql_fetch_assoc($result_2)){     $response [] = $row_2;}$catalog_3 = "select name from commodity where catalog = 3 ORDER BY rank desc LIMIT 10";$result_3 = mysql_query($catalog_3);while($row_3 = mysql_fetch_assoc($result_3)){     $response [] = $row_3;}$catalog_4 = "select name from commodity where catalog = 4 ORDER BY rank desc LIMIT 10";$result_4 = mysql_query($catalog_4);while($row_4 = mysql_fetch_assoc($result_4)){     $response [] = $row_4;}$catalog_5 = "select name from commodity where catalog = 5 ORDER BY rank desc LIMIT 10";$result_5 = mysql_query($catalog_5);while($row_5 = mysql_fetch_assoc($result_5)){     $response [] = $row_5;}$catalog_6 = "select name from commodity where catalog = 6 ORDER BY rank desc LIMIT 10";$result_6 = mysql_query($catalog_6);while($row_6 = mysql_fetch_assoc($result_6)){     $response [] = $row_6;}$catalog_7 = "select name from commodity where catalog = 7 ORDER BY rank desc LIMIT 10";$result_7 = mysql_query($catalog_7);while($row_7 = mysql_fetch_assoc($result_7)){     $response [] = $row_7;}$catalog_8 = "select name from commodity where catalog = 8 ORDER BY rank desc LIMIT 10";$result_8 = mysql_query($catalog_8);while($row_8 = mysql_fetch_assoc($result_8)){     $response [] = $row_8;}$catalog_11 = "select name from commodity where catalog = 11 ORDER BY rank desc LIMIT 10";$result_11 = mysql_query($catalog_11);while($row_11 = mysql_fetch_assoc($result_11)){     $response [] = $row_11;}$catalog_10 = "select name from commodity where catalog = 10 ORDER BY rank desc LIMIT 10";$result_10 = mysql_query($catalog_10);while($row_10 = mysql_fetch_assoc($result_10)){     $response [] = $row_10;}
登录后复制

WaStar 网上花店系统
WaStar 网上花店系统

系统特点: 商品多级分类检索、搜索,支持同一商品多重分类,自由设置显示式样 自由设置会员类型,自由设置权限项目,自由分配每种会员类型和每个会员的权限 灵活的商品定价,最多12级价格自由分配给各种会员类型或会员,也可针对单会员单商品特殊定价 强大的会员管理、帐户管理、订单管理功能和一系列帐务查询统计功能 灵活的会员积分系统,自由设置每个积分事件的积分计算方法 灵活的网站内容发布、管理系统,每个栏目可

WaStar 网上花店系统 2
查看详情 WaStar 网上花店系统

回复讨论(解决方案)

function getCataLog($catalog){	$catalog = "select name from commodity where catalog = ".$catalog." ORDER BY rank desc LIMIT 10";	$result = mysql_query($catalog); 	while($row = mysql_fetch_assoc($result)){	     $response [] = $row;	}}
登录后复制

改写成方法

是这样调用吗  getCataLog(11);

但没数据出来

是这样调用吗  getCataLog(11);

但没数据出来

function getCataLog($catalog){    $catalog = "select name from commodity where catalog = ".$catalog." ORDER BY rank desc LIMIT 10";    $result = mysql_query($catalog);      while($row = mysql_fetch_assoc($result)){         $response [] = $row;    }    return $response;}
登录后复制

还有个神奇的问题

catalog = 11 数据库有3条记录
catalog = 12 数据库有11条记录

$responses = getCataLog(11) + getCataLog(12);

这样输出应该是有14条记录的,但实标只输出了10条。而且catalog = 12的数据是从第四条开始接的

不是这么用的 php里面的 + 相比于数组的合并 array_merge 相同键值的被覆盖掉了

select name,catalog,rank from commodity c where 10 > (select count(*) from commodity where catalog=c.catalog and id>c.id) and catalog in (1,2,3,4,5,6,7,8,10,11) order by c.catalog,c.rank desc
登录后复制

function getCataLog($catalog,&$response = array()){    $catalog = "select name from commodity where catalog = ".$catalog." ORDER BY rank desc LIMIT 10";    $result = mysql_query($catalog);      while($row = mysql_fetch_assoc($result)){         $response [] = $row;    }}$response = array();getCataLog(1,$response);var_dump($response);getCataLog(2,$response);var_dump($response);
登录后复制

select name,catalog,rank from commodity c where 10 > (select count(*) from commodity where catalog=c.catalog and id>c.id) and catalog in (1,2,3,4,5,6,7,8,10,11) order by c.catalog,c.rank desc
登录后复制


请问再加两个条件怎么加啊,我这样加了,但这样加了和数据库对不上,少了很多条数据。

$marketId = $_GET['marketId'];$cityId = $_GET['cityId'];"select name from commodity where catalog = 1 and cityId = $cityId and marketId = $marketId ORDER BY rank desc LIMIT 10""select name,catalog,rank from commodity c where 10 > (select count(*) from commodity where catalog=c.catalog and id>c.id) and catalog in (1,2,3,4,5,6,7,8,10,11) and cityId = $cityId and marketId = $marketId order by c.catalog,c.rank desc"
登录后复制

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号