想法:提取特定州或某州城市的小径列表。
数据库表是wp_postmeta,我们将使用的表中的列是post_id,meta_key和meta_value。
post_id可以在多行中相同 meta_key必须是“location_state”“location_city”或“trail_type”
因此,浏览数据库中的每一行,查找post_meta.meta_value = 'Arizona'
并从同一行抓取post_id
然后,在该状态下找到的post_id
foreach在post_meta.meta_key = 'trail_type'
中查找匹配post_id的值。这意味着post_id与路径相关联,而不是其他内容。返回post_id的数组,这些是该状态的路径。
到名为$ trails_in_state
现在我们已经按照ID获得了州内所有路径的列表。
我还希望将该州某个城市的所有路径都放到一个单独的查询中,以便我可以说当该网页被点击时
<?php if( isset($_GET['city']) AND isset($_GET['state']) ) {
// GET AN ARRAY OF ALL post_id's OF TRAILS IN THAT CITY STATE COMBO
} elseif( isset($_GET['state'])) {
// GET AN ARRAY OF ALL post_id's OF TRAILS IN THAT STATE
}
以下是表格结构http://imgur.com/ijhR1NZ
的图像我正在使用wordpress,所以在这种情况下不能轻易使用mysqli。
答案 0 :(得分:1)
我认为这些应该让你开始。第一个应该选择你所有的post_id,你的meta_value等于输入。我不确定为什么你需要通过州或城市限制一个广泛的匹配应该工作得很好。仅对城市进行过滤的更具体匹配将是第二选项。
SELECT trail_type FROM wp_postmeta WHERE post_id =(SELECT post_id FROM wp_postmeta WHERE meta_value ='Arizona')
和
SELECT trail_type FROM wp_postmeta WHERE post_id =(SELECT post_id FROM wp_postmeta WHERE meta_value ='Arizona'AND_key ='location_city')
如果你没有看到多选和排序,或者可能是UNION查询,我就无法理解那个表结构,这对我来说似乎很直观:(
答案 1 :(得分:0)
为什么你不能只使用这样的东西:
SELECT post_id FROM wp_postmeta WHERE meta_key = "State" AND meta_value = "mysql_escape_string($state)"