0

想法:拉出特定州或州内城市的路线列表。

数据库表是 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。

4

2 回答 2

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 meta_key='location_city')

如果您无法查看多选和排序,或者可能是 UNION 查询,我只是无法理解该表结构,这对我来说似乎违反直觉:(

于 2013-01-22T15:26:24.787 回答
0

为什么你不能只使用这样的东西:

SELECT post_id FROM wp_postmeta WHERE meta_key = "State" AND meta_value = "mysql_escape_string($state)"

于 2013-01-22T15:29:28.503 回答