2017-12-30 27 views
0

함수 내에서 4 개의 쿼리를 실행 중입니다. 한 번에 4 개의 결과를 반환하여 함수를 호출하는 동안 4 개의 결과를 모두 사용할 수 있습니까? 내가 배열을 만들고 그 배열 안에 모든 결과를 저장해야합니까? 하나씩 결과를 반환하려고했지만 return 명령을 호출 한 후 해당 지점에서 함수가 종료됩니다. 각 쿼리 결과를 개별적으로 반환 할 수있는 방법이 있습니까? 여기 내 코드는 다음과 같습니다여러 쿼리를 실행하는 동안 여러 결과를 반환하는 방법?

function select_all_category_name() { 
     require 'admin/db_connect.php'; 
     $sql="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1"; 

     if (mysqli_query($db_connect, $sql)) { 

      $sql1="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1 AND mpid='' AND spid='' AND pid=''"; 
      $sql2="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1 AND mpid!='' AND spid='' AND pid=''"; 
      $sql3="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1 AND mpid!='' AND spid!='' AND pid=''"; 
      $sql4="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1 AND mpid!='' AND spid!='' AND pid!=''"; 
      $query_result1=mysqli_query($db_connect, $sql1); 
      $query_result2=mysqli_query($db_connect, $sql2); 
      $query_result3=mysqli_query($db_connect, $sql3); 
      $query_result4=mysqli_query($db_connect, $sql4); 


     } else { 
      die("Query Problem". mysqli_error($db_connect)); 
     } 
    } 

db_connect.php 파일이 연결이 포함되어 있습니다.

답변

0

아마도 이와 비슷한가요?

function select_all_category_name() { 
    require 'admin/db_connect.php'; 
    $sql="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1"; 

    if (mysqli_query($db_connect, $sql)) { 

     $sql1="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1 AND mpid='' AND spid='' AND pid=''"; 
     $sql2="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1 AND mpid!='' AND spid='' AND pid=''"; 
     $sql3="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1 AND mpid!='' AND spid!='' AND pid=''"; 
     $sql4="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1 AND mpid!='' AND spid!='' AND pid!=''"; 

     $result_array = array(
      "query_result1" => mysqli_query($db_connect, $sql1), 
      "query_result2" => mysqli_query($db_connect, $sql2), 
      "query_result3" => mysqli_query($db_connect, $sql3), 
      "query_result4" => mysqli_query($db_connect, $sql4) 
     ); 

    return $result_array; 
    } else { 
     die("Query Problem". mysqli_error($db_connect)); 
    } 
} 
0

함수는 하나의 값만 '반환'할 수 있습니다. 따라서 4 개의 쿼리 결과를 모두 반환 할 수는 없습니다. 배열 만이 유일한 옵션입니다.

1

사용 배열 :

function select_all_category_name() { 
    require 'admin/db_connect.php'; 
    $sql="SELECT * FROM tbl_category WHERE publication_status=1 AND deletion_status=1"; 

    if (mysqli_query($db_connect, $sql)) { 
     $ret = [ 
      "{$sql} AND mpid ='' AND spid ='' AND pid =''", 
      "{$sql} AND mpid!='' AND spid ='' AND pid =''", 
      "{$sql} AND mpid!='' AND spid!='' AND pid =''", 
      "{$sql} AND mpid!='' AND spid!='' AND pid!=''", 
     ]; 
     foreach ($ret as $i => $sqlx) { 
      $ret[$i] = mysqli_query($db_connect, $sqlx); 
     }; 
     return $ret; 
    } 
    return false; 
} 

또는 (아무 것도 발견되지 않는 경우는 하늘의 배열을 반환합니다) 당신이 전체 기능에 대한 단일 쿼리를 사용할 수 있습니다

SELECT 
    CASE 
     WHEN mpid='' AND spid='' AND pid='' THEN 0, 
     WHEN mpid!='' AND spid='' AND pid='' THEN 1, 
     WHEN mpid!='' AND spid!='' AND pid='' THEN 2, 
     WHEN mpid!='' AND spid!='' AND pid!='' THEN 3 
     ELSE -1 
    END AS idx, 
    * 
FROM tbl_category 
WHERE publication_status=1 AND deletion_status=1 
HAVING idx != -1