2011-09-26 146 views
0

這看起來像一個非常簡單的問題,但它讓我難住了大聲笑。我試圖打印從數據庫收到的行。我想將行存儲在數組中,然後使用for循環打印它們。我知道查詢可以工作,但是當我嘗試打印數組元素時,它只打印字數組。我已經厭倦了使用foreach循環和簡單的for循環。如果任何人都能指出我正確的方向,那將是一種拯救生命的方式。PHP用於循環打印陣列

印刷PHP代碼

<?php 

    $type = "FREE"; 
    $free = getTerms($type); 
    echo "<p>"; 
    for($j = 0; $j < count($free); $j++) 
    { 
    echo "start".$free[$j]."end"; 
    } 
    echo "</p>";       
?> 

從數據庫

function getTerms($type) 
{ 
    $terms = array(); 
    $connection = mysql_open(); 
    $query = "select terms from terms_and_con where accountType='$type' && currentTerms='YES'"; 
    $results = mysql_query($query, $connection) or show_error("signUp.php", "", ""); 

    while($row = mysql_fetch_array($results)) 
    { 
     $terms[] = $row; 
    } 
    mysql_close($connection) or show_error("signUp.php", "", ""); 
    return $terms; 
} 

回答

5

$free陣列中的每個條目本身是一個陣列(從$row)歌廳的行。

嘗試

echo 'start', $free[$j]['terms'], 'end'; 

或者,你可能會發現一個foreach環語義上更合適

foreach ($free as $row) { 
    echo 'start', $row['terms'], 'end'; 
} 

編輯:我建議使用mysql_fetch_assoc()代替mysql_fetch_array()如果你只打算使用$row的關聯條目。

+0

三江源這麼多,你固定它 – Richard

+0

+1要注意,只是因爲你只從MySQL中選擇一個值,並不意味着它只返回那個元素,它仍然是一個數組中的key =>值對。 – animuson

+0

+1我以爲他想打印數組,只是查詢中的術語值。 – ace

1

這個東西是函數mysql_fetch_array(顧名思義)返回一個(在你的情況下都是關聯和數字)數組。所以$行實際上是數組(0 =>VALUE, '條款'=> 'VALUE')

那麼你正在嘗試呼應實際上是一個數組。

簡單的解決方法:更換 :

$terms[] = $row; 

有:

$terms[] = $row[0];