0

我正在编写一个小脚本,它将查询我们的计费数据库并报告任何具有活动免费服务(免费提供)但在其帐户上不再具有付费服务的客户帐户。

这个想法基本上是如果他们有产品 ID a、产品 ID b 或两者都处于活动状态(我们会说这些是免费的),但没有别的,我想找到这些帐户。我是否应该只保留诸如 bProductA = false 和 bProductB = false 之类的布尔值,并在找到时将它们设置为 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")
            {

            }
        }
    }

?>
4

1 回答 1

0

如果你要对数据库做很多工作,你最好学习用集合来思考。SQL 数据库是基于集合的。任何时候你想

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

你几乎可以肯定是在错误的轨道上。

应该考虑的是识别

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

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

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

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

于 2013-08-24T22:19:46.400 回答