Gamer
Gamer

Reputation: 311

How to return multiple results while executing multiple queries?

I am executing 4 queries inside a function. How I can return those 4 results at a time so that I can use all 4 results while calling the function? Should I create an array and store all of the results inside that array? I tried to return the result one by one but after calling return command, function exits from that point. Is there any way to return each of the query result individually? Here's my code:

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 file contains the connection.

Upvotes: 0

Views: 62

Answers (3)

LSerni
LSerni

Reputation: 57453

Use arrays:

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;
}

Or you can use a single query for the whole function (it will return an empty array if nothing is found):

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

Upvotes: 1

Israel Merljak
Israel Merljak

Reputation: 241

Perhaps something like this ?

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));
    }
}

Upvotes: 0

Md Monjur Ul Hasan
Md Monjur Ul Hasan

Reputation: 1801

A function can only 'return' one value. So you cannot return all 4 query results separately. Array is your only option.

Upvotes: 0

Related Questions