PHP function MySQL Select ganz in Array schreiben

dntss

Grünschnabel
Hallo

Ich versuche eine Mysql Abfrage in eine Funktion zu packen damt ich nachher prüfen kann ob sich ein Suchwort im Array befindet.

Mit meiner Funktion habe ich aber immer nur die erste Zeile der Tabelle im Array.

Wieso und wie bringe ich die ganze Abfrage in den Array?

PHP:
function user_ausgabe() {
    global $mysqli;
    $ergebnis = $mysqli->query("SELECT distinct cat FROM element WHERE cat != ''");
    while($row = $ergebnis->fetch_array()) {
        return $row["cat"];
    };
    $ergebnis->close();
}

user_ausgabe();
 
Hi,

das "return" beendet die Funktion und gibt einen Wert zurück. Von daher ist der Befehl hier etwas fehl am Platz.
Was du eher erreichen willst:
PHP:
function user_ausgabe() {
    global $mysqli;
    $ergebnis = $mysqli->query("SELECT distinct cat FROM element WHERE cat != ''");
    $result = array();
    while($row = $ergebnis->fetch_array()) {
        $result[] = $row["cat"];
    };
    $ergebnis->close();
    return $result;
}

PS: Globals sind böse!

Grüsse,
BK
 
Am besten ist an solchen Stellen immer Dependency Injection:
PHP:
class User {
  private $database;

  public function __construct( MySQLi $database ) {
    $this->database = $database;
  }

  public function output() {
    $result   = $this->database->query( 'SELECT DISTINCT `cat` FROM `element` WHERE `cat` <> ""' );
    $datasets = array();
    while ( $row = $result->fetch_array() ) {
      $datasets[] = $row[ 'cat' ];
    }
    $result->close();
    return $datasets;
  }
}

$user = new User( $mysqli );
$user->output();
 

Neue Beiträge

Zurück