2017-12-30 9 views
0

Ich führe 4 Abfragen innerhalb einer Funktion aus. Wie kann ich diese 4 Ergebnisse zu einem Zeitpunkt zurückgeben, so dass ich alle 4 Ergebnisse beim Aufruf der Funktion verwenden kann? Soll ich ein Array erstellen und alle Ergebnisse in diesem Array speichern? Ich habe versucht, das Ergebnis eins nach dem anderen zurückzugeben, aber nachdem ich den Befehl return aufgerufen habe, wird die Funktion von diesem Punkt beendet. Gibt es eine Möglichkeit, jedes Abfrageergebnis einzeln zurückzugeben? Hier ist mein Code:Wie können mehrere Ergebnisse zurückgegeben werden, während mehrere Abfragen ausgeführt werden?

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 Datei, die die Verbindung enthält.

Antwort

0

Vielleicht so etwas?

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

Eine Funktion kann nur einen Wert zurückgeben. Sie können also nicht alle 4 Abfrageergebnisse separat ausgeben. Array ist Ihre einzige Option.

1

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

Oder Sie können eine einzelne Abfrage für die ganze Funktion (es ein leeres Array zurück, wenn nichts gefunden wird) verwenden:

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 
Verwandte Themen