Создание массива PHP из столбца MySQL

mysql_fetch_array предоставит мне массив mysql_fetch_array строки. Каков наилучший способ генерировать массив из значений всех строк в одном столбце?

Редактировать: Много замечательных ответов. Спасибо всем, кто ответил! Я закончил тем, что решил решение, подобное тому, что предлагали Gumbo и GSto. Я дал ответы на GSto, потому что у него меньше очков (просто помощь маленькому парню, ничего личного).

Solutions Collecting From Web of "Создание массива PHP из столбца MySQL"

вы можете выполнить цикл через массив и создать новый, например:

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

Для этого не нужно делать это с помощью расширения mysql, вы можете сделать это:

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

По-видимому, немного быстрее получить столбцы в числовом индексированном массиве, и здесь нет реальной выгоды от наличия формата ассоциативного массива.

Используйте цикл while, чтобы получить записи и сохранить их в массиве:

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

Прокрутите результат:

 $result = mysql_query(...); $data = array(); while ($row = mysql_fetch_array($result)) { array_push($data, $row["columnyouwant"]); } 
 $result = mysql_query("SELECT columnname FROM table WHERE x=y"); $columnValues = Array(); while ( $row = mysql_fetch_assoc($result) ) { $columnValues[] = $row['columnname']; } 
 // 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 } 

Если вы используете PDO вместо php-mysql, возвращаемое значение PDO :: query () реализует интерфейс Traversable, то есть вы можете использовать его, например, с foreach () (в отличие от результата результата mysql, который вы получаете из mysql_query).

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

И в случае, если этого недостаточно, и вам действительно нужен действительно массив (т.е. get_class ($ x) === 'Array'), существует метод fetchAll () .

 $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 

вы можете сделать это :

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

Если вам не нужна другая информация в этой таблице, вы можете запросить только тот столбец, который вам нужен, и все упростит:

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