【问题标题】:Combining multiple MYSQL queries into one with PHP使用 PHP 将多个 MYSQL 查询合并为一个
【发布时间】:2012-11-18 22:12:05
【问题描述】:

我知道这个主题之前已经介绍过,并且我已经阅读了大约十几个 stackoverflow 提供的链接。没有一个符合我的需要。

我有 4 个使用 PHP 查询类似数据的 mysql 查询,我想将其减少到一个查询,并可能将结果放入我可以访问的数组中。这是我当前的代码。

 $id = $row[post_id];
    $resulttwo = mysql_query("SELECT meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` = 'length' ");
    $temptwo = mysql_fetch_array($resulttwo);       
    $length[$id] = $temptwo[0];

    $id = $row[post_id];
    $resultthree = mysql_query("SELECT meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` = 'location_city' ");
    $tempthree = mysql_fetch_array($resultthree);
    $trailcity[$id] = $tempthree[0];

    $id = $row[post_id];
    $resultfour = mysql_query("SELECT meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` = 'location_state' ");
    $tempfour = mysql_fetch_array($resultfour);
    $trailstate[$id] = $tempfour[0];

    $id = $row[post_id];
    unset($tempfour);
    $resultfour = mysql_query("SELECT meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` = 'difficulty' ");
    $tempfour = mysql_fetch_array($resultfour);
    $difficulty[$id] = $tempfour[0].' difficulty';`

【问题讨论】:

  • 那么什么是 $row[post_id]; ??
  • 这是从上一个查询中提取的 wordpress 帖子 ID。

标签: php mysql


【解决方案1】:

这应该可行:

$id = $row[post_id];
$result = mysql_query("SELECT meta_key, meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` IN ('length', 'location_city', 'location_state', 'difficulty')");
$temp = mysql_fetch_assoc($result);

数组$temp 将包含meta_key 以及meta_value,您应该可以像这样调用$temp[length]。你可以用print_r($temp);检查整个数组

您还应该停止使用mysql_ 函数编写新代码,因为它们是being deprecated,而是改用mysqli_PDO

【讨论】:

  • 感谢代码和提示,我真的很感激。我将测试代码并报告。
  • 你的代码只返回了一个结果Array ( [meta_key] => location_city [meta_value] => San Bernardino 它没有做城市、距离、州等。
  • @user1286782 这是print_r($temp)的输出?
  • 是的。抱歉,我的名字是 Branndon,我会尽快更新我的帐户。
  • @user1286782 尝试使用mysql_fetch_array 而不是mysql_fetch_assoc
【解决方案2】:

这应该足够了,因为您只关心每个查询中的第一行。

SELECT meta_value FROM wp_postmeta WHERE post_id = $id AND meta_key IN ("length", "location_city", "location_state", "difficulty") LIMIT 4;

该死的太晚了! :/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2015-02-02
    • 2012-07-09
    • 1970-01-01
    • 2016-02-05
    • 2015-06-05
    相关资源
    最近更新 更多