2017-07-24 32 views
0

我在MySQL在以下格式的專欄中,我運行後,在一定$sqlWordpress和MySQL的,把結果列到一個數組

colname 
12 
15 
10 
23 
12 
2 

我要的是這個轉移到

$colname = array(12,15,10,23,12,2) 

我想出了:

$results = $wpdb->get_results($sql); 
$colname=array(); 
foreach($results as $result){ 
$colname[] = $result;} 

這是最有效的方法是什麼? 的順序也很重要

+0

這看起來相當不錯。 (除少數例外)數據庫被設計爲訪問*表*,由*行*組成,由*字段*組成* ...通常沒有任何方式可以通過電子表格來理解*列*。 – joanolo

+0

只需使用'$ result' var。它已經是你需要的數組了。使用'var_dump($ result);' –

+0

查看它在RDBMS中的行沒有順序,所以這個問題的前提是有缺陷的。 – Strawberry

回答

1

你或許可以使用類似:

$sql = 
    "SELECT " . 
    " group_concat(colname ORDER BY order_by SEPARATOR ',') AS txt_result " . 
    "FROM " . 
    " t ; " ; 

$results = $wpdb->get_results($sql); 
$colname = split(',', $results[0]['txt_result']) 

注意,你需要一定的ORDER BY表達。默認情況下,SQL確實不是提供任何確定的順序。​​將是您的號碼的文本表示的數組。如果需要,您應將它們轉換爲號碼

看到dbfiddle here


參考SQL查詢的結果:

+0

我在這個方法中看不到優勢 – Strawberry

+0

@Strawberry:沒有太多。移動的數據量將稍微減少。這只是一種展示如何從列轉換爲行的方式;以及如何使數據庫工作更多,並且您的PHP代碼工作更少。 – joanolo