【问题标题】:select distinct using php gives wrong result [duplicate]使用php选择不同的结果错误[重复]
【发布时间】:2019-09-21 09:29:52
【问题描述】:

mysql

select distinct(cat) from code order by cat asc;

结果 - 选择了 1 行
确实如此 - 因为整个 cat 列具有相同的值。

php

$st = $db->query("select distinct(cat) from code order by cat asc");
$st->execute();
$arr = $st->fetch();
echo count($arr); // 2

为什么我使用 php 选择了两行?

【问题讨论】:

  • 我认为,fetch() 将关联和索引的结果一起返回
  • 您很可能也可以删除 $st->execute() 部分。 $st 变量应该已经包含结果。

标签: php mysql


【解决方案1】:

$st->fetch() 只返回一行,而不是所有行。 count($arr) 是此数组中的元素数。默认获取模式为PDO::FETCH_BOTH,因此该数组包含您选择的每一列的两个元素。

["cat" => "Category Name", 0 => "Category Name"]

要获取所有行,请使用$st->fetchAll()

$rows = $st->fetchAll();
echo count($rows);

顺便说一句,DISTINCT 不是一个函数,它不仅仅适用于单个列,所以你不应该在它后面加上括号。这是一个适用于整个 SELECT 列表的关键字。只选择一列时没有区别,但写SELECT DISTINCT(col1), col2 ... 之类的内容会产生误导。

【讨论】:

  • 终于把这个困惑的事情弄清楚了。非常感谢
猜你喜欢
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
相关资源
最近更新 更多