2011-11-09 3 views
0

다음 클래스가 있습니다. 어떤 필드를 반환합니다. 나는 참고 문헌에 관심이있다. 쿼리를 반환 한 후 참조가 'A'를 포함하고 B가 반환 된 경우이를 반환하도록 데이터를 분할해야합니다. 별도로 테이블에 넣을 수 있어요. a가 반환하는 값을 나타냅니다. b가 반환되었습니다. 데이터는 방에 나열됩니다.데이터베이스에서 문자열의 특정 문자 찾기 return

<?php 


class CHWIPProgress { 

    var $conn; 

    // Constructor, connect to the database 
    public function __construct() { 
     require_once "/var/www/reporting/settings.php"; 
     define("DAY", 86400); 
     if(!$this->conn = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD)) die(mysql_error()); 
     if(!mysql_select_db(DB_DATABASE_NAME, $this->conn)) die(mysql_error()); 
    } 

    public function ListWIPOnLocation($location) { 
    $sql = "SELECT DISTINCT 
      `ProgressPoint`.`PPDescription` AS Description ,`Bundle`.`WorksOrder` AS WorksOrder, `Bundle`.`BundleNumber` AS Reference,`TWOrder`.`DueDate` AS DueDate , `Stock`.`Description` as Stock , `Stock`.`ProductGroup` as Group 
     FROM TWOrder,Bundle,ProgressPoint, Stock 
        WHERE `Bundle`.`CurrentProgressPoint`=`ProgressPoint`.`PPNumber` 
     AND `TWOrder`.`Colour`=`Bundle`.`Colour` 
     AND `TWOrder`.`Size`=`Bundle`.`Size` 
        AND `TWOrder`.`WorksOrderNumber`=`Bundle`.`WorksOrder` 
        AND `TWOrder`.`Product`=`Stock`.`ProductCode` 
        AND `ProgressPoint`.`PPDescription` = '" . $location . "' 
     ORDER BY `TWOrder`.`DueDate` ASC"; 
     mysql_select_db(DB_DATABASE_NAME, $this->conn); 
     $result = mysql_query($sql, $this->conn); 
        $num_rows = mysql_num_rows($result); 
        echo "Number of rows : $num_rows"; 
     while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
      $return[] = $row; 
     }  

     return $return; 

    } 


} 
?> 
+0

도움을 요청하는 것이 어렵습니다. 좀 더 정교하게한다면 더 많은 사람들이 기꺼이 도울 것입니다. 배열을 사용하는 – Nightwolf

답변

0

ListWIPOnLocation 함수는 각 질의의 행에 대응하는 배열을 반환 보인다. 이 배열을 반복하고 PHP string functions을 사용하여 항목을 분리하고 다른 배열을 추가 할 수 있습니다. 이 데이터를 배열 하나 이상의 방법은 여기, 하나 예입니다

$returned = array(); 
$returned["A"] = array(); 
$returned["B"] = array(); 
foreach($return as $row) { 
    if (strpos($row["Reference"], "A") !== FALSE) { // note the !== operator 
     $returned["A"][] = $row; 
    } 
    if (strpos($row["Reference"], "B") !== FALSE) { // note the !== operator 
     $returned["B"][] = $row; 
    } 
} 
var_dump($returned); 

또는, 당신은 참조 열이 특정 문자가 포함 된 행을 검색 할 WHERE 절에서 MySQL을 LIKE 연산자를 사용할 수 있습니다

WHERE ... AND Reference = LIKE '%A%' 
+0

에는 값이 반환되지 않습니다. 운수 나쁘게. – user1010756

+0

및 REOPENCE NUMBERS에는 26 개의 문자가 포함되어 있으므로 쿼리가 매우 효율적이지는 않습니다. – user1010756

+0

'$ row [ "Reference"]'에는 어떤 값들이 들어 있습니까? –