我正在编写一个小脚本,用于查询我们的计费数据库并报告所有启用免费服务(免费提供)但不再提供付费服务的客户帐户。
这个想法基本上是如果他们有产品 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/