请问下面的代码有优化的方法吗
$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;}
回复讨论(解决方案) 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 10select 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