2011-11-23 81 views
1

这里的查询应该是SELECT *页面,其中$ _GET ['变量']与条件匹配。 $_GET['variables'] are $page_type = type of page AND $loc = location to search。问题是我已将它设置为LIMIT 20,但它只呈现一个页面。MySQL查询总是有限制1

function SearchByTypeLoc($page_type, $loc) { 
    $query = mysql_query(" 
    SELECT 
     `$page_type`.title AS title, 
     `$page_type`.url_title AS url_title, 
     `$page_type`.page_type AS page_type, 
     `$page_type`.street AS street, 
     `$page_type`.city AS city, 
     `$page_type`.state AS state, 
     `$page_type`.city_state_zip AS city_state_zip, 
     `$page_type`.phone AS phone, 
     LEFT(`$page_type`.body, 100) AS body, 
     LEFT(`$page_type`.type, 50) AS type, 
     GROUP_CONCAT(i.image_loc) AS images 
    FROM `$page_type` 
    JOIN page_images i USING(title) 
    WHERE 
     `$page_type`.page_type = '$page_type' AND 
     `$page_type`.city = '$loc' 
    ORDER BY title 
    LIMIT 20"); 

while($fetch = mysql_fetch_assoc($query)) { ... 

?> 

任何想法如何使它不限制1?

+0

什么叫“呈现在一个页面”是什么意思? –

+0

在搜索页面上,它会选择每个页面的预告片。所以如果$ _GET ['loc']被设置为'芝加哥',它将获得芝加哥*地点的所有标题。但是,它只能获得一个标题。 – Graham

+0

你试过了什么?你应该打开控制台并执行一个实际的查询。我们怎么能猜到哪里是错误 – k102

回答

1

GROUP_CONCAT是一个聚合函数,
尽量明确地添加

GROUP BY `$page_type`.title 
+0

是的,就是这样。 – Graham

1

它不是LIMIT 1,但只有$page_type符合标准。你加入title(为什么不在一个ID?),所以必须只有一个$page_type与图像匹配title

如果您想返回也可能没有任何图像的页面,则需要将JOIN更改为LEFT JOIN

将页面链接到图像的方式存在缺陷。如果您更改页面的标题,则需要记住并更新图像表中的相应标题。无论如何,这不是一个合适的外键。你应该在页面上使用auto_increment id。