2009-10-08 17 views
17

mysql_fetch_array me donnera un tableau d'une rangée récupérée. Quelle est la meilleure façon de générer un tableau à partir des valeurs de toutes les lignes dans une colonne?Créer un tableau PHP à partir de la colonne MySQL

Modifier: Beaucoup de bonnes réponses. Merci à tous ceux qui ont répondu! Je me suis retrouvé avec une solution similaire à celle suggérée par Gumbo et GSto. J'ai donné les points de réponse à GSto parce qu'il a moins de points (juste aider le petit gars, rien de personnel).

Répondre

27

vous boucle pouvez à travers le réseau et créer un nouveau, comme si:

$column = array(); 

while($row = mysql_fetch_array($info)){ 
    $column[] = $row[$key]; 
//Edited - added semicolon at the End of line.1st and 4th(prev) line 

} 
4

Utilisez une boucle while pour obtenir les enregistrements et les stocker dans un tableau:

$array = array(); 
while ($row = mysql_fetch_array()) { 
    $array[] = $row['column-x']; 
} 
7

Il n'y a pas de fonction de le faire en utilisant l'extension de MySQL, vous pouvez le faire:

$result = array(); 
while ($row = mysql_fetch_array($r, MYSQL_NUM)) { 
    $result[] = $row[0]; 
} 

Il est apparemment marginalement plus rapide d'aller chercher les colonnes dans un tableau numériquement indexé, et il n'y a pas de réel avantage à avoir le format de tableau associatif.

+0

Eh, vous me battez à elle. –

3

boucle par le résultat:

$result = mysql_query(...); 
$data = array(); 
while ($row = mysql_fetch_array($result)) { 
    array_push($data, $row["columnyouwant"]); 
} 
2
$result = mysql_query("SELECT columnname FROM table WHERE x=y"); 

$columnValues = Array(); 

while ($row = mysql_fetch_assoc($result)) { 

    $columnValues[] = $row['columnname']; 

} 
0

Si vous utilisez PDO au lieu de PHP- mysql la valeur de retour de PDO :: query() implémente l'interface Traversable, ce qui signifie que vous pouvez l'utiliser par exemple avec foreach() (contrairement à la ressource de résultat mysql que vous obtenez de mysql_query).

foreach($pdo->query('SELECT x,y,z FROM foo') as $row) { 

Et dans le cas où cela ne suffit pas et vous avez vraiment besoin d'un tableau (à savoir get_class ($ x) === 'Array'), il y a la méthode fetchAll().

1
// I'm using this for years and it works very good !! it's easy and logic 
$translate = array(); 

while ($row = mysql_fetch_assoc($result)) 
    { 
     $cullomnkey = $row['translshort']; // is what you want the key to be 
     $translate[$cullomnkey] = $row[$language]; // this is the key and the value in the array 
    } 
-1
$query = mysql_query('SELECT * from yourTable'); 
function mysql_field_array($query) { 
    $field = mysql_num_fields($query); 
    for ($i = 0; $i < $field; $i++) { 
     $names[] = mysql_field_name($query, $i); 
    } 
    return $names; 
} 

$fields = mysql_field_array($query); 
$output = implode(',', $fields); //outputs the columns names 
//echo count($fields); //this use if you want count of columns. 
$columns = '{\"fields\":\".json_encode($output).\"}'; 
echo $columns; //for JSON output 
-1

vous pouvez le faire:

 $columns = array(); 
     $i=1; 
     while($row = mysql_fetch_array($sql)) 
      { 
       $columns [$i]=$row['value']; 
       $i++; 
      } 
-1

Si vous n'avez pas besoin d'autres informations dans ce tableau, vous pouvez interroger seulement la colonne dont vous avez besoin et il le rend plus facile tout :

$query = mysql_query("SELECT * FROM table WHERE id='$int' LIMIT 1"); 
$column = array(); 
$column = mysql_fetch_array($query); 
Questions connexes