web-dev-qa-db-de.com

Konvertieren Sie SQL-Ergebnisse in PHP Array

Ich bin ziemlich neu in PHP und habe mich umgesehen und kann die spezifische Antwort, die ich suche, nicht finden.

Ich möchte eine SQL-Abfrage wie diese machen:

$result = mysqli_query($connection, $command)
if (!$result) { die("Query Failed."); }

// Create my array here ... I'm thinking of maybe having to
// make a class that can hold everything I need, but I dunno    

while($row = mysqli_fetch_array($result))
{
    // Put the row into an array or class here...
}

mysqli_close($connection);

// return my array or class

Grundsätzlich möchte ich den gesamten Inhalt des Ergebnisses nehmen und ein Array erstellen, auf das ich auf ähnliche Weise wie auf die Zeile zugreifen kann. Wenn ich beispielsweise ein Feld namens 'uid' habe, möchte ich das über myData ['uid'] abrufen können. Ich vermute, da es mehrere Zeilen geben könnte, vielleicht etwas wie myData [0] ['uid'], myData [1] ['uid'] usw.

Jede Hilfe wäre dankbar.

10
Jonathan Plumb

Du kannst tun:

$rows = [];
while($row = mysqli_fetch_array($result))
{
    $rows[] = $row;
}
18
karthikr

Sie könnten versuchen, mysqli_result::fetch_all() für Arrays zu verwenden:

$result = mysqli_query($connection, $command)

if (!$result) { die("Query Failed."); }

$array = $result->fetch_all();

$result->free();

mysqli_close($connection);

HINWEIS: Dies funktioniert nur mit MySQLND .


Für den Unterricht könnten Sie versuchen, so etwas zu verwenden:

$result = mysqli_query($connection, $command)

if (!$result) { die("Query Failed."); }

while($model = $result->fetch_assoc()){
    // Assuming ModelClass is declared
    // And have method Push() to append rows.
    ModelClass::Push($model);
}

$result->free();

mysqli_close($connection);

Oder dieses:

// Base Model - abstract model class.
class ModelClass extends BaseModel {

    // constructor
    public function __construct(mysqli &$dbms){
        // $this->dbms is MySQLi connection instance.
        $this->dbms   = &$dbms;

        // $this->models is buffer for resultset.
        $this->models = array();
    }

    // destructor
    public function __destruct(){
        unset($this->dbms, $this->models);
    }

    public function read(){            
        $result = $this->dbms->query($command);

        if($this->dbms->errno){
            throw new Exception($this->dbms->error, $this->dbms->errno);
        }

        $this->models = $result->fetch_all();

        $result->free();
    }
}
5
BlitZ
//object oriented style mysqli
//connect to your db
$mysqli = new mysqli("Host", "user", "password", "dbname");
$result = $mysqli->query("SELECT * FROM `table`");

//use mysqli->affected_rows
for ($x = 1; $x <= $mysqli->affected_rows; $x++) {
    $rows[] = $result->fetch_assoc();
}

//this will return a nested array
echo "<pre>";
print_r($rows);
echo "</pre>";

bearbeiten Sie dies und fügen Sie es einer Klasse hinzu. Rufen Sie es einfach auf, wenn Sie eine Abfrage mit Ihrer Datenbank durchführen.

0
robertjoep