比较 php MySQL 查询结果数组以从其中一个数组中获取关联值

Posted

技术标签:

【中文标题】比较 php MySQL 查询结果数组以从其中一个数组中获取关联值【英文标题】:Compare php MySQL query result arrays to get assosciated value from one of the arrays 【发布时间】:2020-08-22 00:02:20 【问题描述】:

我有一组包含选定玩家 ID 的结果,另一组包含所有玩家 ID 的结果以及他们将支付的价格,我不知道如何将两者结合起来。

我认为最简单的解释方法是展示我到目前为止所做的事情以及我想要弄清楚的事情。

我有一个输入表单,它提供下拉菜单(事件类型)和玩家复选框列表:

事件类型:匹配

X = Player1 Junior

_ = 高级玩家2

X = 玩家 3 高级

提交这个得到我可以用这个访问的玩家 ID:

foreach ($_POST as $key => $value) 
          echo $value;
          

然后,我可以使用以下查询,根据赛事类型和球员类别检索俱乐部内每位球员为赛事支付的价格。

SELECT prices.price, book.id 
FROM prices 
JOIN book 
ON prices.cat = book.pricecat 
WHERE eventType = ?('$eventtype') AND clubID = ?('$clubID')

所以现在我有这两组结果 一个包含选定玩家的 ID。 另一个包含所有俱乐部的 playerID 和每个要支付的价格。

我如何比较两者以仅获得所选玩家的价格?

php 和 SQL 非常陌生(4 天很长!)。我正在构建供个人使用的应用程序并进行试用,需要在一周后曲棍球赛季开始时完成,所以没有机会像我想要的那样从一开始就正确学习。解决了很多问题,但现在我的头很痛,所以我会非常感谢一些关于如何解决这个问题的建议!

【问题讨论】:

为什么不在查询中添加用户 ID,然后您将获得此 ID 的价格? @AndréWalker 选定的用户 ID 是来自另一个查询的结果,我不知道如何在不重复每个 ID 的查询的情况下将它们循环到较新的查询中。我想我现在可能已经想通了。我对带有键和值的关联数组了解不多,我在那里显示的那个我从另一个问题中复制以获取所有 $_POST 值,所以我想我可以通过将查询结果放入另一个 assoc 数组来解决它然后使用运算符来比较两者。 :) 【参考方案1】:

将你的两组结果放入两个数组中,然后循环遍历它们。

$resultA = (firstset, with selected player names only);
$resultB = (secondset, with all the player names [0] and prices [1]);
$resultC = array();  // our final array that we'll build below

foreach ( $resultA as $selected )

   foreach ( $resultB as $player )
   
      if ( $selected == $player[0] )
      
         $resultC[] = $player;  // the "[]" adds an element to an array
      
   


var_dump($resultC);  // show us the final array

【讨论】:

以上是关于比较 php MySQL 查询结果数组以从其中一个数组中获取关联值的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 HTML 表单以从 Mysql 数据库中查询和生成结果

mysql查询结果到php数组中

MySQL/PHP 输出数组重复查询然后显示结果,如何删除查询? [复制]

PHP - 从查询结果中获取对象数组

如何用php直接将SQL的查询结果变成一个数组?

php mysql 查询