2017-12-30 37 views
0

私は関数内で4つのクエリを実行しています。私は4つの結果を一度に返すことができるので、関数を呼び出す際に4つの結果をすべて使用できますか?配列を作成し、その配列内にすべての結果を格納する必要がありますか?私は結果を1つずつ返そうとしましたが、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

関数は1つの値だけを返すことができます。したがって、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 
関連する問題