Reputation: 311
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
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
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
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