2009-10-08 35 views
17

mysql_fetch_array sẽ cho tôi một mảng của hàng được tìm nạp. Cách tốt nhất tạo ra một mảng từ các giá trị của tất cả các hàng trong một cột là gì?Tạo mảng PHP từ cột MySQL

Chỉnh sửa: Rất nhiều câu trả lời tuyệt vời. Cảm ơn mọi người đã trả lời! Tôi đã kết thúc với một giải pháp tương tự như những gì Gumbo và GSto gợi ý. Tôi đã đưa ra các câu trả lời cho GSto bởi vì anh ta có ít điểm hơn (chỉ giúp đỡ anh chàng nhỏ bé, không có gì cá nhân).

Trả lời

27

bạn lặp qua mảng, và có thể tạo ra một hình mới, như vậy:

$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

Sử dụng một vòng lặp while để có được hồ sơ và lưu trữ chúng trong một mảng:

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

Không có chức năng để làm điều này bằng cách sử dụng phần mở rộng mysql, bạn có thể làm điều này:

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

Nó rõ ràng là nhanh hơn để lấy các cột trong một mảng được đánh số bằng số, và không có lợi ích thực sự ở đây để có định dạng mảng kết hợp.

+0

Eh, bạn đánh bại tôi. –

3

Vòng qua kết quả:

$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

Nếu bạn sử dụng PDO thay vì PHP- mysql giá trị trả về của PDO :: query() triển khai giao diện Traversable, nghĩa là bạn có thể sử dụng nó với foreach() (không giống như tài nguyên kết quả mysql bạn nhận được từ mysql_query).

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

Và trong trường hợp này không đủ và bạn thực sự, thực sự cần một mảng (ví dụ: get_class ($ x) === 'mảng'), có phương pháp 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

bạn có thể làm điều này:

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

Nếu bạn không cần các thông tin khác trong bảng đó, bạn có thể truy vấn chỉ cột mà bạn cần và nó làm cho nó tất cả dễ dàng hơn :

$query = mysql_query("SELECT * FROM table WHERE id='$int' LIMIT 1"); 
$column = array(); 
$column = mysql_fetch_array($query); 
Các vấn đề liên quan