【问题标题】:Get mysql values from cell X by comparing information in cell Y and cell Z?通过比较单元格 Y 和单元格 Z 中的信息从单元格 X 中获取 mysql 值?
【发布时间】:2013-01-22 15:16:05
【问题描述】:

想法:提取特定州或州内城市的路径列表。

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

然后 foreach post_id 在该状态下找到它在 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。

【问题讨论】:

  • 我不明白你在这里要求什么。您只是要求 SQL 语句吗?你是在问你的表结构吗?
  • 我尝试提供如此多的信息,以至于让人感到困惑。我要求 PHP 代码返回我所追求的数组。现在我必须为每个循环运行多个循环,这是非常糟糕的糟糕编码。

标签: php mysql arrays wordpress


【解决方案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 查询,我只是无法理解该表结构,这对我来说似乎违反直觉:(

【讨论】:

  • 这是什么?您的第一条语句是根据where post_id = something 选择post_id。什么?
  • 所以有嵌套MYSQL查询之类的东西吧?让我试一试。
  • 这是我的代码$result = ("SELECT post_id FROM wp_postmeta WHERE post_id = ( SELECT post_id FROM wp_postmeta WHERE meta_value = $state )"); $temp = mysql_fetch_array($result); 结果是错误“警告:mysql_fetch_array():提供的参数不是有效的 MySQL 结果资源”
  • @thatidiotguy 这是什么?您的第一条语句是根据 where post_id = something 选择 post_id。什么?我知道这是一个例子,而不是 100% 正确的答案,更多的是指向子查询的方向
  • @Branndon 你忘了 $dataset = mysql_query($result);mysql_fetch_array($dataset);
【解决方案2】:

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

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

【讨论】:

  • 因为这并不能告诉我它是否是一条线索。我也可以在那个州列出一家酒店。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 2022-07-06
  • 2019-07-05
相关资源
最近更新 更多