2010-07-01 2 views
2

Je n'ai aucune question PHP que je ne peux pas comprendre!Parcourez les lignes de la base de données et créez un seul tableau.

boucle I par les lignes de ma base de données:

$data = array(); 

    while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)){ 

     $data[] = $row; 
    } 

$data contient désormais un tableau dans un tableau comment puis-je pour que sa reste un seul tableau?

Merci à tous

+0

un tableau de quoi? vous voudrez peut-être indexer les données [] par l'ID de la base de données, n'est-ce pas? – galambalazs

+0

@galambalazs - c'est un tableau de lignes de ma base de données. Je veux juste l'avoir comme un seul tableau afin que je puisse le traiter plus tard plus facilement. Il n'y a pas de réel besoin mais je voulais savoir comment le faire au cas où j'en aurais besoin. – Abs

Répondre

2

une manière plus évidente:

$data = array(); 

while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_NUMERIC){ 
    $data = array_merge($data, array_values($row)); 
} 
3

C'est parce que chaque $row est un tableau associatif. Si vous voulez juste des données comme un tableau de valeurs d'une colonne, spécifiez cette colonne:

$data = array(); 
while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)){ 
    $data[] = $row['column_name_you_want']; 
} 
+0

Génial, merci. Il va être fastidieux de taper tous les noms de colonnes, mais j'ai l'idée derrière votre méthode. – Abs

+4

Hmmm ... A quoi ça sert? Afin d'obtenir correctement toutes les données, vous aurez besoin d'un tableau 2D de toute façon. Vous allez juste changer l'ordre des dimensions, mais il n'y a aucun moyen d'avoir un tableau multidimensionnel. – quantumSoup

+0

(1) Il s'agit d'un tableau associatif. Vous devrez donc taper chaque nom de colonne au moins une fois pour accéder aux données. (2) En fonction de ce que vous devez faire avec les données, réarranger peut être une perte de temps. Si vous mettez les lignes dans '$ data', vous pouvez toujours faire quelque chose comme ceci' $ data [0] ['column_name'] pour accéder 'column_name' dans la première ligne, etc. – takteek

2

Cela devrait vous obtenir toutes les valeurs retournées de toutes les colonnes et les lignes comme un tableau à une seule dimension

$data = array(); 

while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC){ 
    $values = array_values($row); 
    foreach($values as $value) 
    { 
     $data[] = $value; 
    } 
} 
0

Je vois c'est une vieille question, mais je cherchais aussi une solution à cela. Entré avec les éléments suivants qui fonctionne pour moi:

function mssql_query($conn, $query, array $bind = array()) { 
    $stmt = sqlsrv_query($conn, $query, $bind); 
    if($stmt=== false) { 
     // do something with the error information 
     // die(print_r(sqlsrv_errors(), true)); 
     return array(); 
    } 
    sqlsrv_execute($stmt); 
    $data = array(); 
    while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
     array_push($data, $row); 
    } 
    return $data; 
} 

Ce qui peut être utilisé directement dans une boucle foreach:

foreach(mssql_query($conn, $query) as $row) { 
    echo $row['column']; 
} 

ou affecté à une variable de comptage, etc.

$ conn est bien sûr la connexion (de PHP.net):

$serverName = "server.example.com"; // remember to append instance if applicable 
$connectionInfo = array("Database"=>"dbname", "UID"=>"username", "PWD"=>"password"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 
if($conn === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 
Questions connexes