php - 检查数据库中的事件计费服务

标签 php mysql database-design product whmcs

我正在编写一个小脚本,用于查询我们的计费数据库并报告所有启用免费服务(免费提供)但不再提供付费服务的客户帐户。

这个想法基本上是如果他们有产品 ID a、产品 ID b 或两者都处于事件状态(我们会说这些是免费的),但没有其他,我想找到这些帐户。我是否应该保留诸如 bProductA = false 和 bProductB = false 之类的 bool 值,并在找到时将它们设置为 true,或者我可以以更简洁的方式执行此操作吗?

<?php

    // Establish the MySQL Database Connections
    include_once("db.php");

    $clients = mysql_query('SELECT id FROM tblclients WHERE status = "Active"');
    while ($client = mysql_fetch_array($clients))
    {
        $client_id = $client["id"];

        $products = mysql_query('SELECT packageid FROM tblhosting WHERE userid = "' . $client_id . '" AND domainstatus = "Active" OR domainstatus = "Suspended"');
        while ($product = mysql_fetch_array($products))
        {
            // Check for MYSQL/DNS Products
            $product_id = $product["id"];
            $package_id = $product["packageid"];

            // MySQL Database
            if ($package_id == "999")
            {

            }

            // DNS Record
            if ($package_id == "999")
            {

            }
        }
    }

?>

最佳答案

如果您要使用数据库做大量工作,那么最好学习用集合来思考。 SQL 数据库是基于集合的。任何时候你想

  • 运行查询,然后
  • 循环结果,然后
  • 执行另一个查询以获取您感兴趣的数据,然后

你几乎肯定走错了路。

应该考虑的是识别

  • 拥有有效免费服务的活跃客户集合,以及
  • 拥有活跃付费服务的活跃客户群。

(我不愿意打赌每个不活跃的客户都没有免费或付费服务。)

您对属于第一组成员但不属于第二组成员的客户感兴趣。您可以通过单个查询获得该信息。

编辑您的问题,如果您在编写该查询时需要更多帮助,请粘贴 CREATE TABLE 语句。

关于php - 检查数据库中的事件计费服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419301/

相关文章:

mysql - 在统计系统上,我应该保存有关多个表或仅一个表的单次访问的少量信息吗?

mysql - 在mysql中代表 "linked"联系人

javascript - 如何使用 PHP/HTML 限制选中复选框的数量并将值传递到不同的页面

javascript - 使用ckeditor编辑时出现404错误

php - 在 IIS 上的 laravel 中上传文件后出现 HTTP 错误 500.50

mysql - 2个用户在sql中观看的所有电影

mysql - 更新少数记录的列值

php - PDO x MySQL x HTML 字符集问题

sql - 复合主键应该在 SQL Server 中聚集吗?

javascript - 液晶电视自动分页显示日程信息