discuz 统计sql语句
时间 : 2023-12-26 18:08:02 声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

最佳答案

首先,要统计 Discuz 论坛中的数据,你需要连接到 Discuz 数据库。通常,Discuz 的数据库名为 "discuz",数据库用户名为 "root",密码为空。你可以使用如下的 PHP 代码连接到数据库:

$servername = "localhost";

$username = "root";

$password = "";

$dbname = "discuz";

// 创建连接

$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功

if ($conn->connect_error) {

die("连接失败: " . $conn->connect_error);

}

// 连接成功,可以进行数据统计操作

接下来,根据你想要统计的数据类型,可以使用不同的 SQL 语句进行统计。以下是一些常用的 SQL 语句示例:

1. 统计总注册用户数:

```sql

SELECT COUNT(*) AS total_users FROM pre_ucenter_members;

2. 统计总发帖数:

```sql

SELECT COUNT(*) AS total_posts FROM pre_forum_post;

3. 统计最活跃的用户(按发帖数排序):

```sql

SELECT uid, username, posts FROM pre_ucenter_members ORDER BY posts DESC LIMIT 10;

4. 统计每个板块(版块)的帖子数:

```sql

SELECT fid, name, threads FROM pre_forum_forum;

5. 统计每个用户的回帖数:

```sql

SELECT authorid, COUNT(*) AS reply_count FROM pre_forum_post WHERE first = 0 GROUP BY authorid;

6. 统计每个用户的主题数:

```sql

SELECT authorid, COUNT(*) AS thread_count FROM pre_forum_thread GROUP BY authorid;

7. 统计每个用户的最后活跃时间:

```sql

SELECT authorid, MAX(dateline) AS last_active_time FROM pre_forum_post GROUP BY authorid;

这些只是一些常用的统计 SQL 语句示例,你可以根据自己的需求进行修改和扩展。记得在每个 SQL 语句后面加上分号 (;) 来表示语句的结束。

最后,通过 PHP 的 mysqli_query() 函数执行 SQL 语句,并使用 mysqli_fetch_assoc() 函数获取查询结果的每一行记录。

```php

// 执行 SQL 语句

$result = $conn->query($sql);

// 检查是否有结果返回

if ($result->num_rows > 0) {

// 遍历结果集

while ($row = $result->fetch_assoc()) {

// 处理每一行记录

// 例如,输出用户名和帖子数

echo "用户名: " . $row['username'] . ",帖子数: " . $row['posts'] . "<br>";

}

} else {

echo "没有结果";

}

记得在完成所有的统计操作后关闭数据库连接:

```php

// 关闭数据库连接

$conn->close();

希望这些信息能对你有所帮助,祝你成功完成论坛数据的统计任务!

其他答案

在Discuz论坛中,要统计一些常用的SQL语句,可以帮助你了解有关用户、主题和帖子的信息。

1. 统计注册用户总数:

SELECT COUNT(*) FROM pre_ucenter_members;

2. 统计活跃用户总数(最近30天内有发帖或回帖的用户):

SELECT COUNT(DISTINCT authorid) FROM pre_forum_post WHERE dateline >= UNIX_TIMESTAMP(NOW()) - 30*24*60*60;

3. 统计主题总数:

SELECT COUNT(*) FROM pre_forum_thread;

4. 统计回帖总数:

SELECT COUNT(*) FROM pre_forum_post WHERE first = '0';

5. 统计总帖子数(包括主题和回帖):

SELECT COUNT(*) FROM pre_forum_post;

6. 统计最活跃的用户(发帖数量最多的前10位用户):

SELECT author, COUNT(*) AS post_count FROM pre_forum_post GROUP BY author ORDER BY post_count DESC LIMIT 10;

7. 统计每个版块下的主题数量:

SELECT fid, COUNT(*) AS thread_count FROM pre_forum_thread GROUP BY fid;

8. 统计每个版块下的回帖数量:

SELECT fid, COUNT(*) AS post_count FROM pre_forum_post WHERE first = '0' GROUP BY fid;

9. 统计最近7天内每天的发帖数量:

SELECT DATE(FROM_UNIXTIME(dateline)) AS date, COUNT(*) AS thread_count FROM pre_forum_thread WHERE dateline >= UNIX_TIMESTAMP(NOW()) - 7*24*60*60 GROUP BY date;

10. 统计最近7天内每天的活跃用户数量(有回帖或发帖的用户):

SELECT DATE(FROM_UNIXTIME(dateline)) AS date, COUNT(DISTINCT authorid) AS active_user_count FROM pre_forum_post WHERE dateline >= UNIX_TIMESTAMP(NOW()) - 7*24*60*60 GROUP BY date;

以上是一些常见的Discuz统计SQL语句,你可以根据自己的需要进行适当的调整和扩展。