0

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.

3 Answers 3

1

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
Sign up to request clarification or add additional context in comments.

Comments

0

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

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.