从MySQL列创建PHP数组

时间:2009-10-08 14:37:18

标签: php mysql arrays

mysql_fetch_array会给我一个获取行的数组。从一列中所有行的值生成数组的最佳方法是什么?

编辑:很多很棒的答案。谢谢大家回复!我最终得到了类似于Gumbo和GSto建议的解决方案。我给了GSto答案点,因为他得分较少(只是帮助小家伙,没有个人)。

12 个答案:

答案 0 :(得分:30)

你可以循环遍历数组,并创建一个新数组,如下所示:

$column = array();

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

}

答案 1 :(得分:8)

使用mysql扩展无法执行此操作,您可以这样做:

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

在数字索引数组中获取列显然要快一些,并且这里使用关联数组格式没有任何实际好处。

答案 2 :(得分:4)

使用while循环获取记录并将其存储在数组中:

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

答案 3 :(得分:4)

循环结果:

$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_array($result)) {
    array_push($data, $row["columnyouwant"]);
}

答案 4 :(得分:2)

$result = mysql_query("SELECT columnname FROM table WHERE x=y");

$columnValues = Array();

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

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

}

答案 5 :(得分: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 
  }

答案 6 :(得分:0)

如果你使用PDO而不是php-mysql,PDO :: query()的返回值会实现Traversable接口,这意味着你可以使用它,例如使用foreach()(与mysql_query获得的mysql结果资源不同)。

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

如果这还不够,你真的需要一个数组(即get_class($ x)==='Array'),那就是fetchAll()方法。

答案 7 :(得分:0)

如果上述方法均无效,请尝试:

communityV

答案 8 :(得分:0)

多年后,只是另一种方式。不知道它的性能比while循环方法好还是差。

对于没有逗号的值,你可以这样做:

$res = mysql_query("SELECT GROUP_CONCAT(colname) AS values FROM tablename");
$row = mysql_fetch_assoc($res);
$arrOfValues = explode(',', $row['values']);

对于通用解决方案,您可以使用分隔符:

$res = mysql_query("SELECT GROUP_CONCAT(colname SEPARATOR '##_sep_##') AS values FROM tablename");
$row = mysql_fetch_assoc($res);
$arrOfValues = explode('##_sep_##', $row['values']);

答案 9 :(得分:-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

答案 10 :(得分:-1)

你可以这样做:

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

答案 11 :(得分:-1)

如果您不需要该表中的其他信息,则只能查询所需的列,这样可以更轻松:

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