根据集合中字段的值循环MySQLi结果集?

时间:2017-09-11 17:21:51

标签: php mysql mysqli

在PHP中,假设我有一个包含许多行和列的mysqli_query结果集。像这样:

supervisor | employee Name | + other columns of data . . . 
bob        | joe jones
bob        | roy ryan
alice      | mary doe
alice      | dan norris
alice      | diane wood
etc.. for many rows

我想要做的是根据名为supervisor的字段进行循环。这样我就可以处理所有的bob记录,然后处理所有的alice记录等。

如何在不循环整个数据集的情况下获取mysqli结果集中列的所有唯一值的列表(并将它们存储在数组中)?

我可以保留列值的变量,然后检查mysqli_fetch_assoc / array()的每次迭代的变化,并检查变量的值是否已经改变但似乎有更好的方法去做。

有更有效的方法吗?

2 个答案:

答案 0 :(得分:2)

其他评论/答案对于在SQL中执行此操作提出了很好的观点,但是,如果您正在寻找PHP解决方案,则可以始终执行以下操作:

$unique_supervisors = array_unique(array_column($result_set, 'supervisor'));

(注意:版本5.5中添加了array_column()函数,因此如果您使用的是古老版本的PHP,最好的选择是SQL或只是循环遍历数组。)

P.S。同等的信用归功于Magnus Eriksson在同一时间发布完全相同的解决方案。

答案 1 :(得分:0)

您可以使用SQL轻松获取不同的管理员值,但是如果您需要为每个管理员获取数据,那么您必须执行n + 1个查询,这通常不理想。

更好的方法是在一个查询中获取所需的所有数据,然后使用PHP处理它。