【问题标题】:Sql results into php arraysql结果进入php数组
【发布时间】:2009-11-28 16:24:50
【问题描述】:

我想从 sql 结果创建一个数组(在 php 中),如下所示: 我们有存储 NameMessage 的 sql 表“Posts”。示例:

姓名 |留言

约翰 |你好

尼克|美好的一天

乔治 |再见

约翰 |在哪里

我想要的是输出已发布消息但不显示相同名称超过 1 次的人的姓名。 所以输出将是 John,Nick,George。 (从这些记录中,我们看到 John 发布了 2 条消息,但在最终输出中,我们只看到了一次他的名字。

这有可能吗? 提前致谢。

【问题讨论】:

  • 你在使用mysql_函数、pdo、mysqli....吗?

标签: php sql mysql arrays unique


【解决方案1】:

试试:

$sql = <<<END
SELECT DISTINCT Name FROM Posts
END;
$query = mysql_query($sql) or die($sql . ' - ' . mysql_error());
$names = array();
while ($row = mysql_fetch_array($query)) {
  $names[] = $row[0];
}
print_r($names);

【讨论】:

    【解决方案2】:

    选择不同的

    【讨论】:

      【解决方案3】:

      您可以运行 SQL 查询来只选择不同的名称,而不是别的:

      SELECT DISTINCT Name FROM Posts;
      

      这将为您提供一个包含不同 Names 值的结果集,每个唯一值在集合中仅返回 1 次。

      【讨论】:

      • 谢谢,事实上我已经使用查询来显示结果,所以我想使用一个数组来存储唯一值(所以不要做第二个数组)。 ?
      • 您的意思是从现有数组中提取唯一值,例如 array_unique (php.net/manual/en/function.array-unique.php)?
      • 是的,如果您只想使用原始查询,您需要 1) 创建一个包含原始查询中所有名称的数组(基本上是 Cletus 演示的方式),然后 2) 使用K Prime 发布的用于从该数组中删除重复项的 array_unique 函数。
      • 是的,但你能解释一下吗?看,查询例如: $query = dquery('SELECT * FROM POSTS'); (真正的表有更多的列,所以这就是我写 * 的原因)然后: foreach ($query as $res){ echo '';等等。我如何将它们添加到数组中,但只有 1 次并直接显示名称?谢谢!
      【解决方案4】:

      要获得您需要使用 group by 聚合的计数:

      SELECT NAME , COUNT(*) as Posts FROM Posts GROUP BY NAME

      【讨论】:

        【解决方案5】:

        如果你不反对 group BY,这里是 SQL

        select count(name) as N, name from posts group by name ;
        

        拥有超过 1 个帖子的人

        select count(name) as N, name from posts group by name having N > 1 ;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-25
          • 2012-07-11
          • 2011-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多