2013-08-24 3 views
0

Я собираю небольшой скрипт, который будет запрашивать нашу биллинговую базу данных и сообщать о любых учетных записях клиентов, которые имеют бесплатные сервисы (предоставляются бесплатно), но больше не имеют платных услуг на своих счетах.Проверка базы данных для активных биллинговых служб

Идея в основном состоит в том, что они имеют идентификатор продукта a, идентификатор продукта b или оба из них активны (мы будем говорить, что это бесплатные), но больше ничего не хочу, я хочу найти эти учетные записи. Должен ли я просто держать bools, такие как 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") 
      { 

      } 
     } 
    } 

?> 
+0

У вас есть ошибка в коде. Если вы используете 'mysql_fetch_array ($ clients)', вы должны использовать '$ clients [0]', '$ clients [1]' и т. Д. Для получения значений. Если вы хотите получить значения массивов с помощью атрибутов db, таких как '$ client [" id "]', вы должны использовать '$ client = mysql_fetch_assoc ($ clients)'. – programmer

+0

Получите удовольствие от посещения. Я еще не использовал его, поскольку я только что собрал его в качестве макета, чтобы помочь сосредоточить свои мысли. –

ответ

0

Если вы собираетесь много работать с базами данных, вам будет лучше учиться думать в терминах множеств. Базы данных SQL основаны на наборах. Каждый раз, когда вы склонны к

  • выполнить запрос, а затем
  • цикл по результатам, то
  • выполнить другой запрос для получения данных, которые вы заинтересованы в, то

вы почти наверняка ошибаетесь.

То, что вы должны думать о отождествляет

  • набора активных клиентов, имеющих активные бесплатные услуги, и
  • набора активных клиентов, имеющих активные платные услуги.

(я не готов поспорить, что каждый неактивного клиент не имеет бесплатные или платные услуг.)

Вы в клиентах, которые являются членами первого набора заинтересованного, но не являются членами второго. Вы можете получить это с помощью одного запроса.

Измените свой вопрос и вставьте операторы CREATE TABLE, если вам нужна дополнительная помощь в написании этого запроса.

Смежные вопросы