web-dev-qa-db-fra.com

Convertir les résultats SQL en PHP tableau

Je suis assez nouveau sur PHP et j'ai regardé autour de moi et je n'arrive pas à trouver la réponse précise que je cherche.

Je veux faire une requête SQL, comme ceci:

$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

En gros, je veux prendre tout le contenu du résultat et créer un tableau auquel je peux accéder de la même manière que la ligne. Par exemple, si j'ai un champ appelé "uid", je veux pouvoir l'obtenir via myData ["uid"]. Comme il pourrait y avoir plusieurs lignes, peut-être que quelque chose de plus semblable à myData [0] ['uid'], myData [1] ['uid'], etc.

Toute aide serait appréciée.

10
Jonathan Plumb

Tu peux faire:

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

Vous pouvez essayer d’utiliser mysqli_result::fetch_all() pour les tableaux:

$result = mysqli_query($connection, $command)

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

$array = $result->fetch_all();

$result->free();

mysqli_close($connection);

NOTE: Ceci fonctionne avec MySQLND uniquement.


Pour la classe, vous pouvez essayer d'utiliser quelque chose comme ceci:

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

Ou ca:

// 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>";

éditez-le et mettez-le sur une classe et appelez-le chaque fois que vous allez faire une requête avec votre base de données.

0
robertjoep