【问题标题】:mysql Count Distinct and get result using phpmysql Count Distinct 并使用 php 获取结果
【发布时间】:2012-04-11 08:18:49
【问题描述】:

我有一个这样的 mysql 查询:

$topicreplycount = mysql_query('SELECT COUNT(DISTINCT post_msg_id) FROM phpbb_attachments WHERE topic_id = '.$row['topic_id'].' AND post_msg_id < '.$row['post_msg_id']);

并希望使用以下方法获得结果:

$topicreplycount = mysql_result($topicreplycount);

假设表中有 4 个这样的 post_msg_id:

2956 2957 2957 2958

当前的 $row['post_msg_id'] 是 2958,有 3 个 post_msg_ids 小于我要与之比较的那个,并且只有 2 个不同的 post_msg_ids,因为它们中的两个是相同的,我期待“2 " 被退回

但它似乎不起作用,我这样做正确吗?使用此方法,我根本没有在 $topicreplycount 变量中返回任何内容

我很确定 ussign mysql_result($topicreplycount) 一定是错误的,但不知道改用什么

【问题讨论】:

  • 查询不带COUNT函数的查询。

标签: php mysql count distinct


【解决方案1】:

试试这个:

$sql = mysql_query('SELECT COUNT(DISTINCT post_msg_id) AS num_topics FROM phpbb_attachments WHERE topic_id = '.$row['topic_id'].' AND post_msg_id < '.$row['post_msg_id']);
$result = mysql_result($sql);
$row = mysql_fetch_array($result) or die(mysql_error());
echo $row['num_topics'];

【讨论】:

  • 是的,谢谢 Gert Van de Ven,您的方法有效,但没有:$row5 = mysql_result($tcount);所以像这样: $tcount = mysql_query('SELECT COUNT(DISTINCT post_msg_id) AS num_topics FROM phpbb_attachments WHERE topic_id = '.$row['topic_id'].' AND post_msg_id
【解决方案2】:

使用mysql_result 至少需要指定行号

$topicreplycount = mysql_result($topicreplycount,0);

应该可以。由于您使用了 COUNT() 函数,因此只会返回一个结果。

但是,建议不要使用 mysql_ 系列函数。它们实际上已被弃用(不是正式的,但即使是 PHP 文档也建议不要使用它们)。您应该切换到 mysqli_ 或者更好的是 PDO。

【讨论】:

  • 酷,你的方法也有效,甚至更少的编码加上额外的方便信息。所以我必须把这个答案投票为最好的......那么用 PDO 或 mysqli 来做这件事的方法是什么?
猜你喜欢
  • 2010-09-19
  • 2014-03-13
  • 2013-08-11
  • 2016-01-17
  • 2016-04-04
  • 2015-01-28
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多