2011-11-23 80 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。