php - 使用mysql(数据太多)获取不同用户事件的统计信息

标签 php mysql

我正在尝试弄清楚如何进行查询以获取某个列表中排名靠前的用户的数据...稍后我将使用 php 进行静态统计和图表,但我想要的是获取每个列表的总和用户,但我发现这很困难,因为在一个月内,一个用户可以在数据库上进行多次注册,我想对其进行管理,然后获取具有更多事件的前十名用户(在这种情况下,每月的数量更多)。

示例

user_id     quantity      date      kind
user1     23          17/03/18   free
user1      3           17/03/18  charge
user2      5          17/03/18   free
user2      5          17/03/18    free
user2      8           18/03/18   free
user3      9           19/03/18   free
user3      1           20/03/18   free
user3      1          20/03/18    charge
user3     3           20/03/18    charge
user3     5           20/03/18    charge

最佳答案

您可以将数组存储在数据库中,方法是序列化它们,将它们插入数据库,然后在从数据库检索时反序列化它们。

PHP 中的数组可以是多维的,这意味着数组可以存储数组等等。此外,数组可以是关系数组,这意味着您可以存储值并为每个值提供标识符(“键”)。

知道了这一点,你就可以做这样的事情:

$con = new mysqli($host, $username, $password, $db_name);
$stmt = $con->prepare('SELECT * FROM users WHERE user_id=?;');
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result()->fetch_array();

if ($array_data = unserialize($result['data'])) {

    echo 'The quantity related to ', $result['name'], ' is ', $array_data['quantity'];

} else {

    echo 'It seems that there\'s nothing related to ', $result['name'], ' yet. Adding a field now.';

    $array_data = array(

        'quantity' => 23,
        'date' => date('l jS \of F Y h:i:s A'),
        'kind' => 'free'

    );

}

$array_data = serialize($array_data);

$stmt2 = $con->prepare('UPDATE users SET data=? WHERE user_id=?;');
$stmt2->bind_param('ss', $array_data, $id);
$stmt2->execute();

上面的示例非常抽象,但您可以了解如何使用序列化和数组。 MySQL 没有“数组”类型,但您可以对 PHP 中的几乎所有对象使用序列化和反序列化,将它们存储在数据库中。

注意MySQL中序列化字段的类型应该是“BLOB”。

关于php - 使用mysql(数据太多)获取不同用户事件的统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50635213/

相关文章:

php - 使用 php javascript html 和 xml 制作论坛

php - 在 php 文件中或通过 mysql 手动计算?

javascript - NodeJS 和 Mysql 查询获取

mysql - 两张表,一对多关系。如何连接值而不重复行?

mysql - 消除具有重复值的行

php - 有没有办法把这个PHP放到一个数组中,简化一下呢?

php - 为时间序列数据MySQL创建小时组

php - 用于更新多行的 PDO 循环

mysql - 如果其他表中缺少相关数据,请从表中删除项目吗?

php - 如何将我的 ionic 应用程序与 MAMP MYSQL 连接?